服务网格简介

查看本文大纲

在现代分布式架构中,微服务的使用变得越来越普遍。微服务的优点在于它们能够独立扩展和部署,允许团队在不同的时间周期内开发和发布新功能。然而,随着微服务数量的增加,管理服务间的通信、流量控制、安全策略和可观测性也变得更加复杂。这就是服务网格的作用所在。

服务网格是一种基础设施层,负责处理服务间的通信。它为微服务间的请求提供了可靠性、安全性、流量管理和监控能力,而不需要将这些责任分配给开发团队。通过将通信逻辑与业务逻辑解耦,服务网格能够让应用开发者专注于核心功能的开发,而无需关心底层网络的细节。

Envoy 在服务网格中的应用

在服务网格架构中,Envoy 扮演着核心数据平面的角色。它有两种主要的部署模式,分别适应不同的架构需求:

  • Sidecar 模式:在这种模式下,Envoy 作为每个服务实例的“旁车”(Sidecar)运行,直接管理该服务的所有入站和出站流量。控制平面(如 Istio)通过与 Envoy 交互,动态下发流量管理、身份认证、以及可观测性等策略。这种方式确保了每个服务的流量控制独立且细粒度。

  • Ambient 模式:在该模式下,Envoy 作为服务网格的七层代理被部署。每个节点上运行一个四层代理(在 Istio 中称为 Ztunnel),并根据 Namespace 或 Service Account 的不同,部署专门的七层代理(在 Istio 中称为 Waypoint 代理)。Envoy 在这个架构中主要承担七层流量的管理工作,提供高层次的流量控制和安全策略。

依托 Envoy 的强大功能,服务网格能够实现以下特性:

  • 流量管理:Envoy 提供细致的流量控制功能,如路由、负载均衡、重试机制和限流,确保服务间通信高效且可控。
  • 安全性:通过支持 mTLS,Envoy 可以加密所有服务间的通信,并确保双方身份的双向认证,提供了更高的安全保障。
  • 可观测性:Envoy 拥有强大的可观测性工具,能够生成详细的日志、指标,并与分布式追踪系统无缝集成,帮助开发者深入了解服务运行状态。

Envoy 作为服务网格的核心代理,使得微服务架构中的通信更加透明、可靠和安全。通过 Sidecar 或 Ambient 模式的部署,服务网格能够灵活应对不同的场景需求,帮助应用程序轻松应对复杂的分布式环境。

最后更新于 2024/11/27