SOA(Service-Oriented Architecture) 架构是面向服务的架构,是一种将单体应用粗粒度的划分为服务的架构,其核心是将业务功能抽象为独立、可重用、松耦合的服务,也就是将业务功能通过 IT 技术封装为服务,并通过标准化的接口
进行发布、查找和调用,从而达到构建灵活的企业 IT 应用系统。
从应用技术开发层面来看,就是将应用程序的功能模块以独立、分布式、可复用的服务的形式组织起来,然后通过标准的接口和契约,使不同的服务能够跨平台、跨语言、跨系统集成,组成企业的各种应用系统。
集成通常是依赖企业服务总线(ESB)来实现服务间的通信和集成。
ESB 复杂度高:ESB 本身可能成为单点故障和性能瓶颈,其开发、部署和维护成本高。
部署与扩展困难:SOA 架构中的服务划分比较粗粒度,导致服务间的强依赖,部署和独立扩展较为困难,灵活性没有微服务高。
服务治理复杂:在大型 SOA 系统中,服务的版本管理、依赖管理、监控等治理工作面临挑战。
SOA 中的规范定义带来过度的复杂性,落地成本非常之高。SOAP 实现的 Web Service,在性能上和易用性上并不完美。
虽然定义了庞大的 Web Service 协议家族,通过标准协议实现了不同系统之间的通信,但是它们的学习、使用成本都非常高。
微服务架构
微服务架构可以看作是在 SOA 基础上的一种更细粒度的服务拆分和实现方式。它也是将单体应用拆分为多个更小的、自治的服务,每个服务围绕独立的业务功能构建,独立部署和运行,
服务间通过轻量级通信协议(如 HTTP 、gRPC )进行通信。
它去掉了厚重繁琐的 ESB ,没有采用 SOAP 、WSDL 等复杂的标准和协议。
随着技术发展,与微服务架构配套的技术发展也突飞猛进,出现了链路追踪、API Gateway、服务注册和发现、配置中心、CICD、Docker 容器 等等技术,
为微服务架构的快速发展奠定了基础。
SOA 架构与微服务架构的区别
架构概述对比
SOA 面向服务的架构:SOA 是将应用程序拆分为粗粒度、可复用、可独立部署的服务,然后通过接口、协议规范来实现跨平台、多语言、多系统集成的架构,通常依赖企业服务总线(ESB)来实现服务间的通信与集成。 微服务架构(Microservices Architecture):微服务架构是在 SOA 基础上的一种更细粒度的服务拆分和实现方式。它是将应用拆分为多个更小、自治的服务,每个服务围绕独立的业务能力构建,独立部署、独立运行、独立小团队负责。
服务之间通信协议使用轻量级的协议(如 HTTP、gRPC 等)进行通信。
服务拆分粒度
SOA 服务粒度较粗:SOA中的服务往往是较大的业务模块或功能单元。比如:电商系统中的 “商品管理系统” 即为一个 SOA 服务。