微服务和SOA区别详解(4大核心区别)

摘要:微服务和SOA是面向服务的核心架构,但很多同学分不清楚,下面我就重点详解微服务和SOA的核心区别@mikechen

微服务和SOA是面向服务的核心架构,但很多同学分不清楚,下面我就重点详解微服务和SOA的核心区别@mikechen

本文作者:陈睿|mikechen

文章来源:mikechen.cc

架构设计的不同

SOA(Service-Oriented-Architecture),也就是面向服务的架构,强调将系统功能模块化为服务。

通过服务接口、和协议进行通信、和集成,最典型的代表就是:ESB(服务总线),通过ESB(服务总线)来协调服务。

而微服务架构,更加强调将系统拆分成:多个独立的服务单元,比如:用户、交易......等等。

每个服务单元,都有自己的业务逻辑、数据存储、和通信机制...等等。

微服务关注的是如何将系统功能拆分成独立的服务单元,微服务拆分更细,更加独立。

而SOA,通常将服务划分得更大一些,服务之间的职责、和边界比较宽泛。

技术实现不同

微服务的一个核心特性是“技术异构性”,也就是说:每个微服务可以使用不同的技术栈。

例如:不同的编程语言,比如:Java、GO...等等、以及不同的数据库,比如:MySQL,Oracle...等等。

并且,完全独立部署,这种独立性使得每个微服务可以根据实际需求选择最合适的技术,这也是微服务为什么如此流行的原因之一。

而SOA 更强调服务的集成和统一,而不强调技术多样性。

SOA ,更倾向于使用统一的技术栈,特别是在服务之间通过中间件(如 ESB)进行通信时,服务和技术栈的选择较为受限。

服务治理不同

微服务和SOA在服务治理方面,也存在着一些区别。

比如:SOA通常使用集中式的服务治理机制来管理服务之间的交互,而这些机制通常由特定的服务总线,ESB(Enterprise Service Bus)来提供。

比如:在SOA的设计中,服务总线可能会作为代理来管理服务之间的交互,并负责:服务注册、路由、和负载均衡...等功能。

而微服务,则倾向于使用去中心化的服务治理机制,来管理服务之间的交互。

这种机制不需要特定的服务总线,而是由每个服务自行管理和应对服务之间的交互。

比如:在微服务的设计中,服务之间的交互则由每个服务自行管理,并不需要特定的服务总线。

部署管理不同

SOA 的部署通常是集中式的,服务更依赖于一个中央的企业服务总线(ESB)进行管理。

而微服务架构,支持持续交付、和自动化部署...等等,每个微服务可以单独部署、更新、扩展和回滚。

微服务,通常与 DevOps、CI/CD ...等现代软件工程实践紧密集成。

并且,微服务还可以通过容器化(如 Docker)来实现独立部署和管理,容器编排(如 Kubernetes)来一起部署。

来源:力中科技频道

相关推荐