Service Mesh的主要实现原理

简介: 【2月更文挑战第27天】

Service Mesh是一种新型的用于处理服务与服务之间通信的技术,尤其适用于以云原生应用形式部署的服务,能够保证服务与服务之间调用的可靠性。在实际部署时,Service Mesh通常以轻量级的网络代理方式与应用的代码部署在一起,从而以应用无感知的方式实现服务治理。


1、与传统的微服务架构的本质区别

Service Mesh以轻量级的网络代理方式与应用的代码部署在一起,用于保证服务与服务之间调用的可靠性,这与传统的微服务架构有着本质区别,具体体现在以下两点。

  • 跨语言服务调用的需要。大多数公司通常都存在多个业务团队,每个团队业务所采用的开发语言一般都不相同。比如移动服务端的业务主要采用的是PHP语言开发,API平台的业务主要采用的是Java语言开发,移动服务端调用API平台使用的是HTTP请求。如果要进行服务化,改成RPC调用,就需要一种既支持PHP语言又支持Java语言的服务化框架。
  • 云原生应用服务治理的需要。现在微服务越来越多开始容器化,并使用类似Kubernetes的容器平台对服务进行管理,逐步向云原生应用的方向进化。而传统的服务治理要求在业务代码里集成服务框架的SDK,这显然与云原生应用的理念相悖,因此迫切需要一种对业务代码无侵入的适合云原生应用的服务治理方式。


2、Service Mesh实现原理

服务A要调用服务B,经过Linkerd来代理转发,服务A和服务B的业务代码不需要关心服务框架功能的实现。为此Linkerd需要具备负载均衡、熔断、超时重试、监控统计及服务路由等功能。这样,对于跨语言服务调用来说,即使服务消费者和服务提供者采用的语言不同,也不需要集成各自语言的SDK。

可见Service Mesh的实现原理有以下两个。

  • 一个是轻量级的网络代理,也被称为SideCar,它的作用就是转发服务之间的调用。
  • 一个是基于SideCar的服务治理,也被称为Control Plane,它的作用是向SideCar发送各种指令,以完成各种服务治理功能。


3、SideCar

在Service Mesh架构中,服务框架的功能都集中在SideCar中实现,并在每一个服务消费者和服务提供者的本地都部署一个SideCar,服务消费者和服务提供者只负责自己的业务实现,服务消费者向本地的SideCar发起请求,本地的SideCar根据请求的路径向注册中心查询,得到服务提供者的可用节点列表后,再根据负载均衡策略选择一个服务提供者节点,并向这个节点上的SideCar转发请求,服务提供者节点上的SideCar完成流量统计、限流等功能后,再把请求转发给本地部署的服务提供者进程,从而完成一次服务请求。

服务消费者节点上的SideCar称为正向代理,服务提供者节点上的SideCar称为反向代理,Service Mesh架构的关键点就在于服务消费者发出的请求如何通过正向代理转发,以及服务提供者收到的请求如何通过反向代理转发。


4、Control Plane

SideCar能实现服务之间的调用拦截功能,那么服务之间的所有流量都可以通过SideCar来转发,这样所有的SideCar就组成了一个服务网格,再通过一个统一的地方与各个SideCar交互,就能控制网格中流量的运转了,这个统一的地方在Service Mesh中就被称为Control Plane。

Control Plane包括以下功能:

  • 服务发现

服务提供者会通过SideCar注册到Control Plane的注册中心,这样服务消费者把请求发送给SideCar后,SideCar就会查询Control Plane的注册中心来获取服务提供者节点列表。

  • 负载均衡

SideCar从Control Plane获取到服务提供者节点列表信息后,需要按照一定的负载均衡算法从可用的节点列表中选取一个节点发起调用,可以通过Control Plane动态修改SideCar中的负载均衡配置。

  • 请求路由

SideCar从Control Plane获取的服务提供者节点列表,也可以通过Control Plane来动态改变,如需要进行A/B测试、灰度发布或者流量切换时,就可以动态地改变请求路由。

  • 故障处理

服务之间的调用如果出现故障,就需要加以控制,常用的手段有超时重试、熔断等,这些都可以在SideCar转发请求时,通过Control Plane动态配置。

  • 安全认证

可以通过Control Plane控制一个服务可以被谁访问,以及访问哪些信息。

  • 监控上报

所有SideCar转发的请求信息都会发送到Control Plane,再由Control Plane发送给监控系统,如Prometheus等。

  • 日志记录

所有SideCar转发的日志信息也会发送到Control Plane,再由Control Plane发送给日志系统,如Stackdriver等。

  • 配额控制

可以在Control Plane中为服务的每个调用方配置最大调用次数,在SideCar转发请求给某个服务时,会审计调用是否超出服务对应的次数限制。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
Web App开发 开发者
[爆]小程序内可直接打开网页了!附开发文档
昨天微信团队又深夜奉上大新闻:①小程序内可直接打开网页、②小程序可关联500个公众号。为便于开发者灵活配置小程序,小程序现开放内嵌网页能力。(网友评论称这个功能直接把小程序提高n个高度,秒掉手机浏览器。
1798 0
|
移动开发 JavaScript 前端开发
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
【5月更文挑战第15天】Uniapp 和 Flutter 是跨平台开发的热门框架。Uniapp 以其强大的跨平台兼容性和基于 Vue.js 的易学性著称,适合快速开发适用于 iOS、Android 和 H5 的应用。其丰富的组件生态简化了功能集成。然而,在复杂场景下,性能可能不及原生。Flutter 则以其全新渲染引擎实现流畅界面和高度自定义,性能接近原生,但学习成本较高,需处理特定平台适配。适用于高要求的项目。两者各有优势,选择应考虑项目需求、技术储备和开发周期。
2067 1
【Uniapp 专栏】Uniapp 与 Flutter 的功能特点对比
|
10月前
|
安全 网络协议 Linux
Linux查 ssh端口号和服务状态
本指南详细介绍如何检查SSH服务的运行状态,包括通过进程命令验证服务启动、查看监听端口、检测系统服务状态以及防火墙配置。同时提供安全建议,如修改默认端口、禁用密码登录和定期更新系统,确保SSH服务稳定与安全。适用于不同Linux发行版(Systemd/SysVinit),帮助用户全面排查和优化SSH配置。
|
Kubernetes 监控 Cloud Native
关于容器服务 Kubernetes 版 ACK的介绍
【4月更文挑战第8天】容器服务 Kubernetes 版 ACK
1340 0
关于容器服务 Kubernetes 版 ACK的介绍
|
消息中间件 存储 缓存
kafka 的数据是放在磁盘上还是内存上,为什么速度会快?
Kafka的数据存储机制通过将数据同时写入磁盘和内存,确保高吞吐量与持久性。其日志文件按主题和分区组织,使用预写日志(WAL)保证数据持久性,并借助操作系统的页缓存加速读取。Kafka采用顺序I/O、零拷贝技术和批量处理优化性能,支持分区分段以实现并行处理。示例代码展示了如何使用KafkaProducer发送消息。
|
Web App开发 人工智能 安全
指南:Google Gemini 2.0 Pro国内版 (Gemini 2.0国内使用指南)
据称,谷歌 AI 推出的 Gemini Pro 国内版,是一款性能卓越的大型语言模型,其能力和表现均超越了广受欢迎的 ChatGPT。作为 Fostmar 的重大升级,它将为用户带来前所未有的 AI 交互体验
3200 0
|
自动驾驶 安全 机器人
ROS2:从初识到深入,探索机器人操作系统的进化之路
【11月更文挑战第4天】ROS2的学习过程和应用,介绍DDS系统的框架和知识。
1723 1
项目中使用antd中的upload组件file对象到底是info.file还是info.file.originFileObj_坑
在Ant Design的Upload组件中,`onChange`事件处理函数接收一个对象参数,其中`file`字段在不同情况下可能是一个File对象或包含`originFileObj`属性的对象。为了兼容,可以使用`info.file.originFileObj ? info.file.originFileObj : info.file`来确保获取到原始的File对象。官方建议这种写法,并将在未来的大版本中统一返回包含`originFileObj`属性的对象。
778 1
项目中使用antd中的upload组件file对象到底是info.file还是info.file.originFileObj_坑
|
监控 Unix Shell
Nightingale——夜莺监控系统部署邮件告警系统【三】
Nightingale——夜莺监控系统部署邮件告警系统【三】
376 1
Nightingale——夜莺监控系统部署邮件告警系统【三】

热门文章

最新文章

下一篇
开通oss服务