15

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

 3 years ago
source link: http://developer.51cto.com/art/202010/628075.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

以及如何充分利用两者

49bb6f2af1224e3a17c36c8e3f886a2e.png-wh_651x-s_4022439589.png

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

网络层刷新

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

7569b4a90b9945c7271e55c8bff3a90b.png-wh_600x-s_3761139560.png

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

服务网格

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

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

  • 控制平面
  • 数据平面

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

ad8f5bf75751b05925f9958d1e5c7fa8.png-wh_600x-s_1939317787.png

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

网络和流量管理

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

可观察性和可靠性

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

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

安全

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

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

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

  • Istio
  • Linkerd
  • uma
  • consul

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

API网关

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

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

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

a776a9e53db55254a75cd212a3cea7f3.png

使用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生命周期管理时
  • 当您需要翻译服务通信协议时

服务网格和API网关一起

服务网格和API网关很可能可以共存。 下图展示了服务网格和API网关共存的场景:

d53346cbd7ade28d34f3d1f68e80e495.png-wh_600x-s_2881901152.png

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK