ServieMesh是云原生非常核心的组件,也是未来微服务的发展重心,下面我就全面来详解ServieMesh@mikechen
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。
ServiceMesh被认为是新一代微服务架构,主要用于管理、和控制微服务架构中,服务间通信的基础设施层。
服务网格(Service Mesh),“服务”和“网格”是两个关键概念,它们共同构成了服务网格的核心理念和功能。
如下图所示:
上图所示,主要包含:深色服务(业务微服务),旁边蓝色是网格(边车Sidecar服务)。
在微服务架构中,“服务”:指的是系统中的一个功能单元或模块,它通常是一个独立部署的服务实例,通过网络接口提供特定的功能、或服务。
在服务网格中,“网格”:指的是微服务架构中的服务实例之间的通信网络、和拓扑结构。
服务网格通过在服务之间插入代理(通常是 sidecar 代理),形成了一个透明的、可编程的通信网络。
在传统的服务治理中,服务框架的 SDK 负责处理服务注册、服务发现、负载均衡、故障恢复等任务,这使得业务代码与特定的服务框架紧密耦合。
为了解决这个问题,服务网格的出现提供了一种更为灵活和可控的服务治理方式。
服务网格通过在服务之间插入专用的代理(如 sidecar 代理),将通信逻辑从业务代码中分离出来,使得业务代码无需关心服务治理的具体实现细节。
这种方式使得服务治理能够以一种更为统一和标准化的方式实现,同时也提高了应用程序的灵活性和可移植性。
并且,服务网格作为一种新型的服务治理方式,也能够更好地满足云原生应用的设计理念。
服务网格(Service Mesh)的原理。主要基于两个关键概念:数据平面(Data Plane)、和控制平面(Control Plane)。
如下图所示:
数据平面负责:拦截、处理和转发进出服务实例的所有流量,同时执行诸如负载均衡、故障恢复、安全策略等任务。
代理,是数据平面的核心组件,通常以 sidecar 代理的形式,部署在每个服务实例旁边。
如下图所示:
代理负责:拦截进出服务实例的所有流量,并执行各种任务,如负载均衡、路由、故障检测、安全策略等。
Sidecar 代理、与业务代码相分离,服务实例的业务逻辑无需感知代理的存在。
所以,这种解耦,可以帮助实现服务间通信的透明性,并使得通信逻辑、与业务逻辑分离。
控制平面,主要用于:配置、监控和管理整个服务网格中的服务间通信。
控制平面由多个子组件组成,这些组件协同工作以实现对服务间通信的配置、路由、监控和安全策略的管理。
比如:
这些组件通常以一种分布式系统的方式部署和协作,以实现对服务间通信的全面管理、和控制。
本篇已收于mikechen原创超30万字《阿里架构师进阶专题合集》里面。