服务网格和API网关在微服务架构中的作用
以及如何充分利用两者
如果您从事微服务,那么您可能已经多次听说过这两个术语。 人们常常在两者之间感到困惑。 在本文中,我将详细讨论服务网格和API网关,并讨论何时使用。
网络层刷新
在深入研究服务网格和API网关之前,让我们重新访问网络层。 以下是OSI网络层模型:
进行此更新的原因是,我们将在下一部分中讨论其中的一些层。
服务网格
服务网格是一种管理分布式软件系统中服务到服务通信的技术。 服务网格管理东西向的网络通信。 东西向流量表示数据中心,Kubernetes集群或分布式系统内部的流量。
服务网格包含两个重要组件:
- 控制平面
- 数据平面
驻留在应用程序旁边的代理称为数据平面,而协调代理行为的管理组件称为控制平面。
服务网格使您可以将应用程序的业务逻辑与网络,可靠性,安全性和可观察性分开。
网络和流量管理
服务网格允许您执行动态服务发现。 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网关通常仅关注L7策略。
API网关的类型
从部署的角度来看,可以使用两种方式使用API网关:
- 内部API网关:充当一组服务或产品范围的网关
- Edge API网关:充当外部组织的消费者或移动客户端的网关
市场上有许多API网关。 以下是其中一些:
- Apigee
- NGINX的API网关
- Software AG的API网关
何时使用什么
现在您已经了解了什么是服务网格和API网关,让我们尝试了解何时使用什么。
何时使用服务网格
- 当您需要在同一产品范围内通过安全性和监视来实现L4 / L7服务通信时
- 何时可以为每个单个服务实例及其副本部署Sidecar代理
- 当服务可以共享相同的CA证书以建立安全的通信时(跨各种产品可能无法实现)
何时使用API网关
- 当您需要通过各种产品的安全性和监视来实现L7服务通信时
- 当您希望通过/不通过货币化将API公开为产品时
- 当您想向开发人员提供完整的API生命周期管理时
- 当您需要翻译服务通信协议时