构建现代应用程序的 8 个最佳服务网格管理器

微服务架构中的服务网格

在微服务架构中,应用程序由多个小型服务构成,这些服务需要相互通信才能协同工作。

很多时候,微服务之间直接通信,这会导致效率低下和容易出错。而服务网格则可以帮助解决这些问题。

什么是服务网格?

服务网格最初是指一种控制应用程序中不同微服务之间数据交换的方法。 简单来说,它是利用软件来辅助微服务之间的通信,实现:

  • 应用识别
  • 负载均衡
  • 身份验证
  • 数据加密

微服务之间的互联网络通过各自的代理建立并行连接。 将微服务网络集成到更高层的数据中心网络管理系统中,可以更轻松地优化通信,避免应用程序在发展过程中因停机而受到影响。 实际上,每个应用服务都需要其他服务来满足用户的需求。

例如,在在线销售应用中,用户在购买前通常需要查看商品是否有货。 这就需要数据库服务和产品页面之间建立通信。 然后,产品页面还要与用户的购物车进行交互。

此外,商家可能会在应用中添加产品推荐服务,以便更好地引导用户。 这项新服务需要与产品标签数据库以及库存数据库进行交互,而库存数据库又需事先与产品页面通信。 实际上,这是一组可复用的功能模块。

现代应用程序通常构建成这样相互连接的服务网络,每个服务都专注于执行特定的业务功能。

服务网格的工作原理及其优势

需要强调的是,服务网格不会在应用程序运行环境中添加额外的功能。它实际上是以一组网络代理的形式存在,这在企业计算领域是一个很常见的概念。

每次您使用工作计算机访问网页时,您可能都在使用代理。服务网格中的代理帮助在微服务之间路由请求。这些代理通常被称为“边车”,因为它们与服务并行运行,而不是运行在服务内部。各个服务的“边车”代理共同构成了服务网格。

如果没有服务网格,开发人员需要为每个微服务编写代码,处理服务之间的通信逻辑。 由于通信逻辑隐藏在每个服务中,开发人员很难实现企业目标。

此外,他们在诊断通信问题时也会遇到困难。 服务网格可以解决与服务间通信管理相关的问题。

使用服务网格,可以自动化服务之间的通信,因为所需的数据和信息可以通过网格的外包基础设施轻松访问。 这使得定位和修复问题和故障变得更加容易。 此外,这还可以让公司的 IT 部门从繁琐的通信管理中解放出来,专注于其他更重要的任务。

由于通信的抽象,发生故障的服务可以被自动绕过,而不会影响正常运行的服务之间的数据交换。 服务网格系统易于访问的数据也可以方便地进行分析,从而改进应用程序的操作和性能。

我们已经了解了服务网格的工作原理,接下来,我们来看看一些优秀的网格服务管理器:

网格管理平台

Meshery 是一个网格服务管理器,支持运行不同的网格服务解决方案,可以部署在 Kubernetes 和 Docker 上。 Meshery 提供了一个 UI 和 CLI,可以为包括 Linkerd 和 Istio 在内的所有主要网格服务解决方案设置基准。 Meshery 可以直接部署在集群上,也可以在本地部署。

亚马逊应用网格

AWS App Mesh 是亚马逊 Kubernetes 平台(EKS)的网络网格服务。 它通过 envoy sidecar 代理为入口和出口流量提供应用程序级别的管理,并使用熔断器和 AWS X-Ray 提供可观测性指标。 AWS App Mesh 也可以与其他服务一起使用,例如 Amazon EC2 和 AWS Fargate。

Linkerd

Linkerd 是一个开源网络网格管理器,它使用基于 Rust 的自定义代理来管理微服务。 它预装了 Grafana 来提供可观测性指标。 与其他开源网格管理器不同,Linkerd 提供 GUI,并且不仅支持 Prometheus,还支持 Traefik、Kong 和 Gloo 等入口控制器。 Linkerd 还支持跨集群的自动部署升级。

Istio

Istio 是一个使用 Envoy 代理来管理微服务的开源服务网格。 Istio 提供了多种功能,例如负载均衡、策略创建、流量路由、超时、断路、流量转移和重试。 Istio 还提供跨容器或机器的分布式跟踪功能,无需安装额外的软件。

Kuma

Kuma 是由 Kong 创建的服务网格,用于通过 Envoy 代理扩展现有服务的功能。 Kuma 支持不同的微服务,并为网络提供增强的安全性和监控。 它预装了许多用于路由、mTLS、流量控制和各种安全功能的策略。 使用 Kuma,您可以通过一个控制平面和数据平面轻松控制不同的隔离网格。

Nginx 网格

Nginx 是 Kubernetes 的服务网格,它使用由 Nginx Plus 提供支持的数据平面来加密容器之间的流量。 Nginx 使用速率限制和断路器来管理服务之间的流量,并提供 Grafana 仪表板用于监控服务网格的指标。

Consul

Consul 是 HashiCorp 的服务网格,它提供了一个内置的代理层,同时支持 Envoy sidecar 代理。 它提供基于路径的路由、流量转移和负载均衡。 Consul 与 HashiCorp Vault 集成,也支持 mTLS。 它可以与 Prometheus 和 Grafana 集成以查看可观测性指标。

Gloo 网格

Gloo Mesh 是一个建立在 Istio 网格之上的服务网格,它使用 Envoy 代理来实现零信任安全模型。 Gloo 支持多租户 Kubernetes、VM 和其他微服务。 它对 CI/CD 和 GitOps 非常友好,这使得部署更加容易。

总结

服务网格解决了不同微服务之间的通信问题,提供了各种安全优势; 但是,由于市场上有许多不同的网格解决方案,因此选择最适合您需求且易于管理的网格服务至关重要。