首页 理论教育 微服务与SOA的区别及开发优势

微服务与SOA的区别及开发优势

时间:2023-11-23 理论教育 版权反馈
【摘要】:图5-2微服务的关注方向微服务与SOA的区别:微服务架构在某种程度上是面向服务的架构SOA的继续发展。暂时看来微服务架构讨论的是SOA相同的事情。表5-1SOA与微服务架构对比下面进一步解释表5-1所述的不同之处:开发方面:在这两种体系结构中,可以使用不同的编程语言和工具开发服务,从而将技术多样性带入开发团队。因此,频繁部署新版本的微服务或独立扩展服务会更容易。

微服务与SOA的区别及开发优势

微服务是指开发单个小型的但有业务功能的服务,每个服务都有自己的处理和轻量通信机制,可以部署在单个或多个服务器上。微服务也可以指一种松耦合、有一定的边界上下文的面向服务架构。也就是说,如果每个服务都要同时修改,那么它们就不是微服务,因为它们紧耦合在一起;如果需要掌握一个服务太多的上下文场景使用条件,那么它就是一个有上下文边界的服务。

相对于单体架构和SOA,微服务的主要特点是组件化、松耦合、自治、去中心化,主要体现在以下4个方面:

(1)一组小的服务:服务粒度要小,而且每个服务是针对一个单一职责的业务能力的封装,专注做好一件事情。

(2)独立部署运行和扩展:每个服务能够独立被部署并运行在一个进程内。这种运行和部署方式能够赋予系统灵活的代码组织方式和发布节奏,使得快速交付和应对变化成为可能。

(3)独立开发和演化:技术选型灵活,不受遗留系统技术约束。合适的业务问题选择合适的技术可以独立演化。服务与服务之间采取与语言无关的API进行集成。相对于单体架构,微服务架构是更面向业务创新的一种架构模式。

(4)独立团队和自治:团队对服务的整个生命周期负责,工作在独立的上下文中,自己决策自己治理,而不需要统一的指挥中心。团队和团队之间通过松散的社区部落进行衔接。

与单体应用不同,微服务注重功能的纵向拆分,如图5-1所示。

图5-1 单体应用与微服务功能拆分

微服务更加专注于解耦,且在AKF拆分立方体(Scalability Cube)中更加关注功能分解,如图5-2所示,详细原则会在实施原则时说明。

图5-2 微服务的关注方向

微服务与SOA的区别:

微服务架构在某种程度上是面向服务的架构SOA的继续发展。基本上,这种架构类型是开发软件、网络或移动应用程序作为独立服务套件(又称微服务)的一种特殊方式。这些服务的创建仅限于一个特定的业务功能,如用户管理、用户角色、电子商务车、搜索引擎、社交媒体登录等。此外,它们是完全独立的,也就是说它们可以写入不同的编程语言并使用不同的数据库。集中式服务管理几乎不存在,微服务使用轻量级HTTP、REST或Thrift API进行通信。

暂时看来微服务架构讨论的是SOA相同的事情。不过,如果引用微软服务领域的先驱Martin Flower,我们则应该把SOA看作微服务的超集。那么,差异在什么地方呢?表5-1详细分析了这一点。

表5-1 SOA与微服务架构对比(www.xing528.com)

下面进一步解释表5-1所述的不同之处:

(1)开发方面:在这两种体系结构中,可以使用不同的编程语言和工具开发服务,从而将技术多样性带入开发团队。开发可以在多个团队中组织,但是在SOA中,每个团队都需要了解常见的通信机制。另一方面,使用微服务,服务可以独立于其他服务运行和部署。因此,频繁部署新版本的微服务或独立扩展服务会更容易。

(2)“上下文边界”:SOA鼓励组件的共享,而微服务尝试通过“上下文边界”来最小化共享。上下文边界是指以最小的依赖关系将组件及其数据耦合为单个单元。由于SOA依靠多个服务来完成业务请求,构建在SOA上的系统可能比微服务要慢。

(3)通信:在SOA中,ESB可能成为影响整个系统的单一故障点。由于每个服务都通过ESB进行通信,如果其中一个服务变慢,可能会阻塞ESB并请求该服务。另一方面,微服务在容错方面要好得多。例如,如果一个微服务存在内存错误,那么只有该微服务会受到影响,所有其他微服务将继续定期处理请求。

(4)互操作性:SOA通过消息中间件组件促进了多种异构协议的使用。微服务试图通过减少集成选择的数量来简化架构模式。因此,如果想要在异构环境中使用不同协议来集成多个系统,则需要考虑SOA。如果所有服务都可以通过相同的远程访问协议访问,那么微服务是一个更好的选择。

(5)大小:SOA和微服务的主要区别在于规模和范围。微服务架构中的前缀“微”是指内部组件的粒度,意味着它们必须比SOA架构的服务往往要小得多。一方面,微服务中的服务组件通常有一个单一的目的。另一方面,在SOA服务中通常包含更多的业务功能,并且通常将它们实现为完整的子系统。

以下是微服务与SOA在系统服务上的区别:

(1)微服务剔除SOA中复杂的ESB企业服务总线,所有的业务智能逻辑在服务内部处理,使用Http(Rest API)进行轻量化通信。

(2)SOA强调按水平架构划分为:前端、后端、数据库、测试等,微服务强调按垂直架构划分,按业务能力划分,每个服务完成一种特定的功能,服务即产品。

(3)SOA将组件以Library的方式和应用部署在同一个进程中运行,微服务则是各个服务独立运行。

(4)传统应用倾向于使用统一的技术平台来解决所有问题,微服务可以针对不同业务特征选择不同技术平台,去中心统一化,发挥各种技术平台的特长。

(5)SOA架构强调的是异构系统之间的通信和解耦合(是一种粗粒度、松耦合的服务架构)。

(6)微服务架构强调的是系统按业务边界做细粒度的拆分和部署。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈