什么是面向服务的架构(SOA)?
面向服务的架构(SOA)是一种应用架构设计方法,以一组独立服务为核心。服务可以是任何能够完成某项操作并提供特定结果的业务功能,例如处理客户订单或生成库存报告。多个服务可以组合成复合应用,为最终用户提供更丰富的功能。
SOA方法的优势包括更易于维护和更新服务组件。由于每个组件更加精简且相对独立,因此可以更轻松地修复代码或替换元素,而不会影响其他所有元素。然而,在确定如何以适当方式实现服务间通信时,问题也随之出现。SOA通常使用企业服务总线(ESB)作为服务间通信的核心方式。ESB往往难以适应变化,通常会增加复杂性,也让人更难明确服务的边界。
SOA 与微服务对比
如果您觉得SOA听起来与当前对微服务的定义非常相似,持这种看法的不止您一人。微服务也是小型、自包含的服务,既可独立运行,也可协同工作。但SOA与微服务之间存在一些关键区别。以下两点值得注意:
- 微服务是粒度非常细的服务,出于功能方面的原因,按特定粒度进行拆分。这意味着,在微服务架构中,一项服务(包括数据库、应用服务器和产品支持)由同一团队进行端到端管理。相比之下,SOA以逻辑方式拆分服务。两者的区别在于,按逻辑分组的服务由多个职能共享。这听起来不错……但一旦服务发生故障,依赖该服务的所有职能都会受到影响。微服务架构旨在消除这种影响,将业务服务及实现相应职能和交付业务价值所需的一切完全封装在各自独立的职能中,即使这意味着过程中会出现一些重复。
- 由于微服务完全按功能划分,因此也不受最终限制SOA的相同通信框架、协议和规范的约束。微服务注重将智能保留在每组端点内,并通过简单的结构将其连接起来。通常,实现这一目标的有效方式是部署一个API网关,由其承载内部系统架构,并使用REST等轻量级Web协议将请求路由到各个独立的微服务。此外,每个微服务通常会使用其他服务的API,但网关可防止移动应用直接访问后端。SOA受制于Web服务规范,并依赖ESB连接应用,因此无法实现这种灵活性。
尽管许多人认为微服务是对SOA的正确实现,但两者实际上存在许多关键差异。在很多方面,这些差异使微服务成为复杂应用更有效的架构选择。如需详细了解SOA和微服务,请下载免费电子书《构建微服务:设计细粒度系统》。
NGINX 如何提供帮助?
NGINX Plus和NGINX是出色的负载均衡解决方案,广泛应用于Dropbox、Netflix和Zynga等高流量网站。全球超过3.5亿个网站依靠NGINX Plus和NGINX Open Source快速、可靠且安全地交付内容。
作为一款基于软件的应用交付控制器(ADC),NGINX Plus旨在以远高于同等功能硬件解决方案的效率和更低的成本,为微服务架构提供支持。
- NGINX Plus提供完整的应用交付和负载均衡解决方案,可提升每个微服务的性能和可靠性
- NGINX Plus具备出色的灵活性和可扩展性,可作为API网关和各项服务的端点集成到您的技术栈中
- NGINX Plus可充当高性能HTTP服务器,快速高效地完成微服务操作

