摘要:微服务和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)来一起部署。
来源:力中科技频道