服务网格和API网关在微服务架构中的作用

kjyiyi 2020-10-10

 以及如何充分利用两者

服务网格和API网关在微服务架构中的作用

如果您从事微服务,那么您可能已经多次听说过这两个术语。 人们常常在两者之间感到困惑。 在本文中,我将详细讨论服务网格和API网关,并讨论何时使用。

网络层刷新

在深入研究服务网格和API网关之前,让我们重新访问网络层。 以下是OSI网络层模型:

服务网格和API网关在微服务架构中的作用

进行此更新的原因是,我们将在下一部分中讨论其中的一些层。

服务网格

服务网格是一种管理分布式软件系统中服务到服务通信的技术。 服务网格管理东西向的网络通信。 东西向流量表示数据中心,Kubernetes集群或分布式系统内部的流量。

服务网格包含两个重要组件:

  • 控制平面
  • 数据平面

驻留在应用程序旁边的代理称为数据平面,而协调代理行为的管理组件称为控制平面。

服务网格和API网关在微服务架构中的作用

服务网格使您可以将应用程序的业务逻辑与网络,可靠性,安全性和可观察性分开。

网络和流量管理

服务网格允许您执行动态服务发现。 Sidecar代理可以帮助您进行负载平衡和速率限制。 它可以帮助您进行流量拆分,以执行A / B类型的测试,这对于发布Canary版本很有帮助。

可观察性和可靠性

服务网格支持分布式跟踪,可帮助您进行高级监视(请求数,成功率和响应延迟)和调试。 它甚至具有利用服务间通信来更好地理解通信的能力。

由于服务网格提供了运行状况检查,重试,超时和电路中断,因此可以提高应用程序的基准可靠性。

安全

服务网格允许服务之间的相互TLS,这有助于提高服务到服务通信的安全性。 您还可以将访问控制列表(ACL)实施为安全策略。

真正的服务网格/边车代理支持广泛的服务,并实现L4 / L7流量策略。

市场上有许多可用的服务网格。 以下是其中一些:

  • Istio
  • Linkerd
  • uma
  • consul

您可以在互联网上找到许多比较上面列出的服务网格的文章。

API网关

API网关充当进入集群,数据中心或一组分布式服务的单个入口点。 在网络拓扑中,通常称为南北向流量。 通常,移动客户端属于这种类型的网络流量。

人们最终很有可能最终会使用API网关在同一数据中心内部署的两种产品之间进行通信。 在这种情况下,交通类型可以是东西向。

API网关接收来自客户端的调用,并将其路由到适当的服务。 在这样做的同时,它也可以翻译协议。

服务网格和API网关在微服务架构中的作用

使用API网关有很多好处:

  • 抽象:API网关可以抽象其下的微服务的复杂性,并为客户端创建统一的体验
  • 身份验证:API网关可以处理身份验证并将令牌信息传递给服务
  • 流量控制:API网关可以限制入站和出站API流量
  • API监控/获利:如果您打算通过API获利,API网关可以通过提供监视客户端的API请求/响应的功能来帮助您做到这一点
  • 转换:API网关可以帮助转换/转换API请求/响应。 它还可以帮助协议翻译。

API网关通常仅关注L7策略。

API网关的类型

从部署的角度来看,可以使用两种方式使用API网关:

  • 内部API网关:充当一组服务或产品范围的网关
  • Edge API网关:充当外部组织的消费者或移动客户端的网关

市场上有许多API网关。 以下是其中一些:

  • Apigee
  • NGINX的API网关
  • Software AG的API网关

何时使用什么

现在您已经了解了什么是服务网格和API网关,让我们尝试了解何时使用什么。

何时使用服务网格

  • 当您需要在同一产品范围内通过安全性和监视来实现L4 / L7服务通信时
  • 何时可以为每个单个服务实例及其副本部署Sidecar代理
  • 当服务可以共享相同的CA证书以建立安全的通信时(跨各种产品可能无法实现)

何时使用API网关

  • 当您需要通过各种产品的安全性和监视来实现L7服务通信时
  • 当您希望通过/不通过货币化将API公开为产品时
  • 当您想向开发人员提供完整的API生命周期管理时
  • 当您需要翻译服务通信协议时

相关推荐