什么是服务网格?

Sherwin.Wei Lv7

什么是服务网格?

回答重点

服务网格是一个专门用于处理服务间通信的基础设施层,它通过部署在每个服务旁边的Sidecar 代理,拦截服务间的网络流量,实现诸如流量管理、故障恢复、服务发现等功能。常见的服务网格解决方案包括 Istio、Linkerd 等。

它的核心就是通过 Sidecar 模式,将复杂的网络通信逻辑从微服务中分离出来,应用开发者只需关注业务逻辑,无需处理服务间的通信管理。这种方式能够提升系统的可观测性可管理性可维护性

扩展知识

从发展的角度来理解下什么叫服务网格

在最早期的时候通信是和业务耦合在一起的,由业务开发来编写通信和业务代码。

后来就把这些通信相关的代码抽离出来,成为一个公共组件,这样业务开发们不需要编写和维护通信相关代码,只需要调用这个公共组件即可,公共组件由专门的组件开发人员来负责。

但是,虽说我们业务程序员不需要开发这些公共组件,但是使用上还是有成本的,我们需要了解公共组件的一些接口特性,并且引入使用它们。

所以就想着把这些公共组件再剥离出来,使之不与业务应用所处同一个进程,让它对业务完全透明(当然有些还是需要引入轻sdk的),这个其实就叫边车代理。

企业微信截图_fd85ba17-d100-406c-a792-c1d8513ba4ec.png

在原来的车旁边挂个斗,这就是边车啦。

由边车来进行透明可靠的通信,并进行路由、限流、容错等等。

企业微信截图_3996c38d-d2a6-4d2a-95e8-974073099fe4.png

但是呢,如果服务多了边车也会很多,运维人员肯定顶不住分管这么多边车,所以需要把边车代理统一管理,也就是需要有个代理管理器来管理这些边车,所以就组成了以下这幅图(来自 philcalcado.com)。

企业微信截图_686db5c0-731b-409f-a0bc-3a4ce47a3245.png

这样的架构其实就是服务网格 (Service Mesh),也称之为微服务 3.0 版本。

它是一种新型的架构模式,主要的思想就是将服务通信从服务代码中抽象出来,并且在应用中实现统一的管理和控制,这里这里可以再看下腾讯云的服务网格架构图,如下所示:

Snipaste_2024-06-12_06-24-12.jpg

我们会发现 Proxy,那个就是服务网格中所说的代理,其通常是以 sidecar (边车)的方式部署在每个服务示例的旁边。

在服务网格中,Proxy 可以与其他服务进行交互,并且可以处理来自其他服务实例的网络流量或者网络请求,并且可以提供负载均衡、熔断限流、服务监控等功能。

优点总结

  • 解耦通信逻辑:通过 Sidecar 代理模式,将服务间的复杂通信逻辑(如重试、超时、负载均衡)从应用中抽离出来,简化了开发者的工作。
  • 提升系统可靠性:服务网格能够实现自动的熔断、限流、重试策略,使得系统在面对不稳定的服务时依然能够保持较高的可靠性。
  • 增强可观测性:服务网格提供了强大的可观测性工具,开发者可以轻松监控服务间的调用情况、响应时间等,从而快速定位问题。

服务网格的核心组件

控制平面(Control Plane):控制平面负责管理和下发服务网格的配置,协调各个代理的行为。它负责流量策略的配置、策略规则的下发、身份认证的管理等。

  • 常见控制平面:如 Istio 中的 Pilot、Citadel、Galley 等组件,它们共同管理数据平面的工作。
  • 作用:控制平面是服务网格的“大脑”,通过配置管理来实现流量控制、安全策略和可观测性功能。

数据平面(Data Plane):数据平面由Sidecar 代理组成,这些代理部署在每个微服务旁边,负责处理服务之间的所有网络流量。常见的代理如 Envoy

  • 作用:数据平面负责具体的流量拦截、转发、加密解密等操作,是服务网格实际执行流量管理的核心。
  • 优势:数据平面和微服务应用在同一宿主机上运行,能够透明地管理进出服务的流量,无需修改应用程序代码。

常见的服务网格解决方案

Istio:Istio 是由 Google、IBM、Lyft 联合开源的服务网格项目,是目前最流行的服务网格解决方案之一。

  • 特性:提供全面的流量管理、服务发现、身份认证、监控等功能。其数据平面通常使用 Envoy 代理,控制平面负责配置和协调流量策略。
  • 优势:功能强大、生态完善,适合需要复杂流量管理和高安全性要求的企业级微服务系统。

Linkerd:Linkerd 是 CNCF(云原生计算基金会)下的一个轻量级服务网格项目,主要专注于简化部署和降低资源消耗。

  • 特性:相比 Istio,Linkerd 更加轻量,资源开销更小,适合在对性能要求较高的场景中使用。
  • 优势:部署简单、资源占用较低,适用于中小规模的微服务系统。

Consul Connect:Consul 是 HashiCorp 开源的服务发现和配置管理工具,Consul Connect 是 Consul 提供的内置服务网格功能。

  • 特性:提供服务注册与发现、健康检查、分布式配置以及mTLS 加密通信功能。
  • 优势:适用于已经使用 Consul 进行服务发现的系统,可以无缝集成服务网格功能。
Comments