来源:mikechen的互联网架构
服务网格(Service Mesh)是未来的微服务架构,也是云原生王牌产品,所以掌握好服务网格就很重要了,下面我就全面来详解服务网格
ServiceMesh服务网格
服务网格(Service Mesh),是新一代的微服务架构,主要处理服务之间的通信。
服务网格(Service Mesh),最早在2016年9月由开发Linkerd的Buoyant公司提出,是一个形象化的词语表达:Service(服务)和Mesh(网格)。
如下图所示:
它描述了服务间的依赖形态,就像上面这张网一样,其中深色是接触最多的业务微服务,旁边蓝色的被称为边车Sidecar服务。
为什么需要服务网格
传统的服务治理,要求在业务代码里集成服务框架的 SDK,这显然与云原生应用的理念相悖,因此迫切需要一种对业务代码无侵入的适合云原生应用的服务治理方式。
为了解决这个问题,业界出现了一种对业务代码无侵入的适合云原生应用的服务治理方式,其中的核心概念是通过Sidecar代理实现。
服务治理功能被抽象为一个独立的Sidecar代理,它与每个微服务实例部署在同一个主机或容器中,作为服务的附属组件运行。
Sidecar称为边车模式,因为类似连接到摩托车的边车,从而得名,如下图所示:
边车模式,通过给应用程序添加边车的方式来,拓展应用程序现有的功能,比如:日志记录、流量控制、服务注册和发现、限流熔断等功能。
通过添加边车实现,微服务只需要专注实现业务逻辑即可,实现了控制、和逻辑的分离与解耦。
这种对业务代码无侵入的服务治理方式,更好地符合了云原生应用的理念,使得微服务架构更易于构建、部署和维护。
服务网格实现原理
ServiceMesh架构,如下图所示:
在服务网格中,控制面板、业务逻辑和Sidecar边车是三个重要的概念,它们共同构成了服务网格架构的关键部分。
1、控制面板
控制面板是服务网格架构中的一个重要组成部分,主要用于配置、管理和监控数据平面中的Sidecar代理。
常见的控制面板组件,包括:Pilot、Citadel、Galley、Mixer..等,它们协同工作,为数据平面提供服务发现、负载均衡、安全认证、流量控制等功能。
2、业务逻辑
业务逻辑,非常容易理解,指的是实际的应用程序代码,它包含了服务的业务逻辑、和功能实现。
比如:上图的ServiceA业务逻辑、ServiceB业务逻辑、ServiceC业务逻辑...等,分别代表具体的业务逻辑的实现。
与传统的服务治理方式不同,服务网格的设计理念是将通信和管理逻辑与业务逻辑解耦。
使得业务逻辑无需关注通信细节,从而实现服务的可移植性、可测试性和可维护性。
3、Sidecar边车
在服务网格架构中,Sidecar是一种轻量级的代理模式,它与每个微服务实例一起部署在同一个主机或容器中,作为服务的附属组件运行。
Sidecar代理负责拦截、和处理服务之间的所有通信流量,并与控制平面进行交互。
主要实现:服务发现、负载均衡、安全认证、监控和跟踪等功能。
通信拦截:Sidecar代理负责:拦截服务之间的所有通信流量,包括:入站、和出站的请求和响应。
服务发现:Sidecar代理负责:向服务注册中心注册服务实例,并根据需要动态地发现、和管理服务实例。
负载均衡:Sidecar代理可以根据配置的负载均衡算法,将请求分发到多个服务实例中,以提高服务的可用性和性能。
监控和跟踪:Sidecar代理负责:收集和传输服务间的通信流量数据,以实现监控、日志记录、错误追踪和性能调优等功能。
通过Sidecar边车的部署,可以实现对业务代码的无侵入性,使得业务逻辑无需关注通信和管理功能的实现细节。
以上