架构——SOA(Service Oriented Architecture)面向服务的架构

定义

SOA定义了一种可通过服务接口复用软件组件并实现其互操作的方法。SOA中的每项服务都包含执行完整的独立业务功能所需的代码和数据(解耦),这些服务是独立的、可重用的,并且可以跨系统和组织交互。

组件

服务

消息

协议

ESB(企业服务总线)

定义

EBS(Enterprise Service Bus)一个中央的、可重用的基础设施组件,被用于协调和组织分布式系统中的各个服务之间的通信和交互。

作用

  1. 服务选择:ESB为不同的服务提供了一个统一的接口。通过ESB,可以通过连接到不同的服务,使得在系统中进行通信更加容易。
  2. 协议转换:在SOA中,很有可能会出现各种协议(例如SOAP、REST等),ESB可以将来自不同服务的消息转换成统一的协议格式。这样就能避免不同协议之间的通信困难。
  3. 消息路由:ESB可以帮助确定消息的目的地,它能够根据预定义的规则和条件选择正确的服务,并将消息传递给它。
  4. 消息转换:ESB能够转换消息的格式,使得来自一个服务的消息可以被其他服务识别和使用。这能够降低服务之间的相关耦合度。

优缺点

优点

  1. 灵活性:服务之间的松耦合设计使得应用程序易于扩展和维护。
  2. 可重用性:服务可以在多个应用中重复使用,降低了开发成本。
  3. 拓展性:可以轻松添加新服务;可以对现有服务进行拓展(如负载均衡,微服务)
  4. 易于集成:通过标准化接口,SOA 可以更容易地与其他系统集成。

缺点

  1. 性能损失:服务之间的通信可能导致性能损失。
  2. 复杂性:SOA 架构可能会增加系统的复杂性,特别是在大型应用中。
  3. 网络依赖:SOA 架构依赖于网络,网络不稳定可能导致服务不可用。

SOA与微服务

区别

服务粒度

  1. SOA:面向服务架构中的服务通常具有较大的粒度,它们可能包含多个功能模块。SOA服务通常关注业务功能的整合和重用。
  2. 微服务:微服务架构中的服务粒度更小,每个服务通常只负责一个特定的功能。微服务关注单一职责原则,使得服务更加轻量化和独立。

服务独立性:

  1. SOA:SOA服务可能共享相同的数据存储、基础设施和资源。这可能导致服务之间的耦合度较高。
  2. 微服务:微服务架构强调服务的独立性,每个服务都有自己的数据存储、基础设施和资源。这有助于降低服务之间的耦合度,提高系统的可维护性和可扩展性。

通信

  1. SOA:服务必须共享一种称为企业服务总线 (ESB) 的通用通信机制。SOA通过EBS管理和协调服务。但是存在单点故障的问题,即当某一服务速度变慢,可能整个系统受影响。
  2. 微服务:在微服务架构中,每个服务都是独立开发的,具有自己的通信协议。

通信协议:

  1. SOA:SOA通常使用复杂的通信协议,如SOAP(Simple Object Access Protocol)和WS-*(Web Services)规范。基于ESB通信机制,当某一服务速度变慢,可能整个系统受影响。
  2. 微服务:微服务架构倾向于使用轻量级的通信协议,如RESTful API和gRPC。

部署和运维:

  1. SOA:SOA服务通常部署在集中式的应用服务器上,这可能导致部署和运维的复杂性较高。
  2. 微服务:微服务架构支持独立部署和运维,每个服务可以单独进行扩展、更新和维护。这有助于提高系统的敏捷性和可靠性。

技术栈:

  1. SOA:SOA服务通常使用统一的技术栈和平台,这可能限制了技术的多样性和灵活性。
  2. 微服务:微服务架构允许每个服务使用不同的技术栈和平台,这有助于提高技术的多样性和灵活性。

从 SOA 迁移到微服务

DevOps 可用于实现从 SOA 架构过渡到微服务

你可能感兴趣的:(架构,java)