关注△mikechen的互联网架构△,10年+BAT架构经验倾囊相授
大家好,我是 mikechen | 陈睿 。
SOA 和微服务很多同学傻傻分不清楚,本文详解 6 大 SOA 和微服务的区别。@mikechen
核心设计不同
首先,我们来理解下SOA,全称是Service Oriented Architecture,即面向服务的架构。
它是一种设计方法,其中包含多个服务, 服务之间通过相互依赖最终提供一系列的功能。
SOA 依赖于企业服务总线(ESB),ESB(企业服务总线)在 SOA 中起到了中央协调者的作用。
通过ESB(企业服务总线),来实现服务之间的通信、消息路由、转换和协议转换。
而微服务架构,其实和 SOA 架构类似,微服务是在 SOA 上做的升华。
微服务架构强调的一个重点是:业务需要彻底的组件化、和服务化。
即原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用,这些小应用之间通过服务完成交互和集成。
服务粒度不同
在SOA中服务的粒度可以比较粗,它可以是一个较大的服务,可能包含多个相关的业务功能。
在微服务中,服务的粒度通常更小,每个微服务都专注于一个明确的业务领域或功能,实现单一职责原则。
部署独立性不同
在SOA中,服务通常是部署在统一的运行时环境中,共享相同的基础设施和中间件。
而微服务,鼓励每个服务单元都是独立部署的,可以根据需要进行独立扩展、和升级。
独立部署使得每个微服务能够独立于其他服务进行开发、测试、发布、和升级,从而提高了系统的灵活性、和敏捷性。
比如:由于每个微服务可以独立部署,团队可以根据业务需求快速发布新功能、或修复 bug,而无需等待其他团队的进度,这提高了发布的频率和灵活性。
服务规模不同
SOA 中的每一个服务整体上来说还是一个比较大的单体项目,因为 SOA 一般不会分的很细。
而微服务则不同,在微服务中我们会将服务都划分的很细,每一个服务基本上都是只负责一个很小的功能模块。
范围复杂性不同
SOA是一种更宏观的架构风格,它关注整个系统的组织和集成,旨在实现不同应用程序和系统之间的松耦合和灵活性。
微服务是SOA的一种特定实践,更加关注于将一个大型应用程序拆分为一系列小型、独立的服务单元,每个服务单元专注于解决一个明确的业务功能。
数据交互方式不同
SOA中,服务之间的数据交互通常是通过消息传递、服务总线或共享数据库等方式进行。
微服务中,每个服务通常拥有自己的数据库,并通过轻量级的通信机制(如:RESTful API)进行交互。
综上所述,
SOA 是一个更宏观的概念,着眼于整个系统的组织、和集成。
微服务则是 SOA 的一种实践方式,着重于将系统拆分为小型、独立的服务单元,以实现更高的灵活性和可伸缩性。
我们可以将微服务看作是SOA的一种演化、和优化。
以上,是微服务和 SOA 的 6 大核心区别的详细解析,欢迎评论区留言交流或拓展。
我是 mikechen | 陈睿 ,关注【mikechen的互联网架构】,10年+BAT架构技术倾囊相授。
新的架构专题内容,第一时间更新至:阿里架构师进阶全部合集。
本文已同步我的技术博客 www.mikechen.cc,更新至我原创的《30W+字阿里架构技术合集》中。