什么是面向服务架构 (SOA)?

面向服务架构 (SOA) 是一种围绕一组独立服务设计applications的架构方法。 服务可以是完成某项操作并提供特定结果的任何业务功能,例如处理客户订单或编制库存报告。 可以将服务组合在一起以创建复合applications,为最终用户提供更强大的功能。

SOA 方法的好处包括更容易维护和更新服务组件——每个组件更加精简和包含,因此更容易修复代码或替换元素而不会影响所有其他元素。 然而,当我们确定如何最好地实现服务之间的通信时,问题就出现了。 SOA 通常与企业服务总线 (ESB) 相关联,作为服务之间通信的中央手段。 ESB 通常对变化反应不佳,通常会导致更多的复杂性,并且使得更难理解服务的开始和结束位置。

SOA 与 微服务

如果您认为 SOA 听起来很像微服务的当前定义,那么您并不孤单。 微服务也是小型的、独立的服务,旨在独立运行同时也协同工作。 但 SOA 和微服务之间存在着关键的区别。 以下是需要注意的几点:

  • 微服务是非常细粒度的服务,由于功能原因在一定的粒度上进行分离。 这意味着在微服务架构中,服务(包括数据库和应用服务器以及产品支持)由同一团队端到端管理。 另一方面,SOA 以逻辑方式分离服务。 这里的区别是,逻辑分组的服务在功能之间共享。 这听起来不错......直到服务出现故障,并且所有依赖它的功能都会受到影响。 微服务架构旨在通过在其独特功能中完全包含业务服务以及实现这些功能和提供业务价值所需的一切来消除这种影响 - 即使这意味着在此过程中重复某些操作。
  • 由于微服务完全由功能包含,因此也不受最终限制 SOA 的相同通信框架、协议和规范的约束。 相反,微服务专注于保持每组端点内的智能,并使用简单的结构来连接它们。 实现这一目标的最佳方式通常是实现一个单一的API 网关,该网关包含内部系统架构并使用轻量级 Web 协议(例如 REST)将请求路由到每个独立的微服务。 此外,每个微服务通常都会使用来自其他服务的 API,但网关会阻止移动应用程序接触后端。 这种程度的灵活性是 SOA 所无法实现的,因为 SOA 受制于Web 服务规范,并且依赖 ESB 来连接applications。

虽然许多人认为微服务是 SOA 的正确实现,但实际上两者之间存在一些关键差异 - 并且在许多方面,这使得微服务成为复杂applications更有效的架构选择。 有关 SOA 和微服务的更多信息,请下载免费电子书《构建微服务》: 设计细粒度系统

NGINX 能提供什么帮助?

NGINX PlusNGINX是 Dropbox、Netflix 和 Zynga 等高流量网站使用的一流的负载平衡解决方案。 全球有超过3.5 亿个网站依靠 NGINX Plus 和 NGINX Open Source 快速、可靠、安全地传递其内容。

作为基于软件的应用交付控制器(ADC),NGINX Plus 旨在比具有同等功能的硬件解决方案更有效、更经济地促进微服务架构。

  • NGINX Plus 提供完整的应用交付和负载平衡解决方案,可提高每个微服务的性能和可靠性
  • NGINX Plus 具有足够的灵活性和可扩展性,可以作为 API 网关和每个服务的端点融入您的堆栈中
  • NGINX Plus 充当高性能 HTTP 服务器,以最高的速度和效率完成微服务操作