服务网格Service Mesh学习整理

服务网格从总体架构上来讲,就是一堆紧挨着各项服务的用户代理外加一组任务管理流程组成。

代理在服务网格中被称为数据层或数据平面(data plane),

管理流程被称为控制层或控制平面(control plane)。

数据平面截获不同服务之间的调用并对其进行“处理”;

控制平面协调代理的行为,并为运维人员提供 API,用来操控和测量整个网络。

 服务网格是一个专用的基础设施层,旨在“在微服务架构中实现可靠、快速和安全的服务间调用”。它不是一个“服务”的网格,而是一个“代理”的网格,服务可以插入这个代理,从而使网络抽象化。在典型的服务网格中,这些代理作为一个 sidecar(边车)被注入到每个服务部署中。服务不直接通过网络调用服务,而是调用它们本地的 sidecar 代理,而 sidecar 代理又代表服务管理请求,从而封装了服务间通信的复杂性。相互连接的 sidecar 代理集实现了所谓的数据平面,这与用于配置代理和收集指标的服务网格组件(控制平面)形成对比。

Service Mesh 的基础设施层主要分为两部分:控制平面与数据平面。当前流行的两款开源服务网格 Istio 和 Linkerd 实际上都是这种构造。

控制平面的特点:

  • 不直接解析数据包。
  • 与控制平面中的代理通信,下发策略和配置。
  • 负责网络行为的可视化。
  • 通常提供 API 或者命令行工具可用于配置版本化管理,便于持续集成和部署。

数据平面的特点:

  • 通常是按照无状态目标设计的,但实际上为了提高流量转发性能,需要缓存一些数据,因此无状态也是有争议的。
  • 直接处理入站和出站数据包,转发、路由、健康检查、负载均衡、认证、鉴权、产生监控数据等。
  • 对应用来说透明,即可以做到无感知部署。

在Service Mesh中,当我们将一个服务部署在Kubernetes之后,安装在Kubernetes中的Service Mesh组件(例如Istio)就会自动在该微服务的同一个Pod之中启动一个与之对应的代理进程(例如istio-proxy),这个保姆式的代理进程会代替微服务本身去实现原先在Spring Cloud体系中需要微服务自身完成的服务注册、负载均衡、熔断限流等微服务治理功能。并且,这些代理进程并不是孤军奋战,而是会通过像xDS协议(Service Mesh中数据面与控制面通信的通用协议)与Service Mesh控制组件保持连接。

这也就引出了Service Mesh架构中关键的两个概念:控制面与数据面。前面我们所示的Sidecar(例如istio-proxy,实际上是envoy)就是数据面,与微服务治理逻辑相关的信息都存储在数据面中,而控制面则是Service Mesh的中心控制组件(例如Istio中的Pilot组件),控制面可以通过xDS协议(具体又分为LDS、CDS...)向数据面下发各种服务治理相关的规则,例如限流规则、路由规则、服务节点更新信息等等。

这种设计方式就是Service Mesh最核心的设计逻辑——通过Sidecar的方式代理微服务进行服务治理逻辑(数据面),通过控制面感知外界环境的变化并通过xDS协议支持各种微服务治理策略规则的集中管理和下发,而这里的控制面和数据面都会被融合进像Kubernetes这样的基础架构环境中,对于普通微服务的开发,研发人员要做的只是将一个应用以编排的方式部署进k8s集群即可!而所有与微服务治理相关的逻辑都由代理数据面与控制面协作完成。

这里我们以Service Mesh最著名的开源方案Istio的架构图来解释上面所说的逻辑,具体如下:

其中服务注册发现可以直接利用Kubernetes的内部发现机制,通过监听Kubernetes Pod的变化来实现,具体示意图如下:

而微服务治理相关的逻辑,以Istio为例,流程大致是这样的

 

管理员通过Pilot配置治理规则,并通过xDS协议向Envoy下发治理规则,而Envoy从Pilot获取微服务治理规则后,就可以在流量访问的时候按照规则执行相应的限流、路由等微服务治理逻辑了!

火了 2 年的服务网格究竟给微服务带来了什么?-阿里云开发者社区

诗和远方:蚂蚁金服 Service Mesh 深度实践 | QCon 实录-阿里云开发者社区

再启程,Service Mesh 前路虽长,尤可期许-阿里云开发者社区

干货|如何步入Service Mesh微服务架构时代

实践参考:

Istio + SkyWalking + Spring Boot 实战 -Zadig 自测模式搞定开发者子环境 - 墨天轮

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Service Mesh是一个新兴的概念,用于解决微服务之间通信日益复杂的问题。它是一种在服务之间构建通信层的方法,可以管理和监控微服务之间的通信。Service Mesh提供了一种透明的方式来处理服务之间的请求和响应,并提供了诸如负载均衡、故障恢复、安全性等功能。 Service Mesh的架构通常由两部分组成:数据平面和控制平面。数据平面负责处理实际的请求和响应流量,而控制平面负责管理和配置数据平面。常见的Service Mesh实现包括Istio和Linkerd。 与Kubernetes的关系是,大多数Service Mesh需要像Kubernetes这样的编排系统来管理和部署微服务Service Mesh并不取代编排平台,而是提供了额外的扩展功能。它可以与Kubernetes集成,通过控制平面和数据平面来管理和监控微服务之间的通信。 总结来说,Service Mesh是一个用于解决微服务通信复杂性的概念,它提供了一种透明的通信层,并具备负载均衡、故障恢复和安全性等功能。它的架构由数据平面和控制平面组成,通常需要与像Kubernetes这样的编排系统集成使用。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [全方位详解Service Mesh服务网格)](https://blog.csdn.net/RancherLabs/article/details/100764041)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值