- 最新动态
- 功能总览
- 产品介绍
- 计费说明
- 快速入门
- 用户指南
- 最佳实践
- 开发指南
- API参考
- SDK参考
-
常见问题
- 使用华为云CSE注意事项
- Nacos引擎
-
ServiceComb引擎
- 如何进行本地开发和测试?
- 证书加载错误
- 无效头名称
- mesher性能损耗是多少?
- 连接服务中心提示“Version validate failed”
- 连接服务中心提示“Not enough quota”
- 如何处理开启了安全认证的ServiceComb引擎专享版开启IPv6后服务注册失败?
- 服务名重复校验范围是什么?
- 为什么一定要定义服务契约?
- 如何解决微服务应用开发过程中微服务开发框架同netty版本不匹配的问题?
- ServiceComb专享版引擎版本从1.x升级到2.x时有哪些注意事项?
- 用户业务从微服务引擎专业版迁移到微服务引擎专享版checklist
- 创建引擎提示“Duplicate cluster name”
- 创建引擎过程中处理接入地址步骤失败,提示the subnet could not be found
- 本地轻量化注册服务报错:does not match rule: {Max: 100, Regexp: ^[a-zA-Z0-9]{1,160}$|^[a-zA-Z0-9][a-zA-Z0-9_\-.]{0,158}[a-zA-Z0-9]$}"}
- SpringCloud应用连接ServiceComb引擎2.x版本配置中心失败
- 在全局配置中配置相关的配置项修改后,服务获取的配置内容未修改成功
- 获取配置失败
- 视频帮助
- 通用参考
链接复制成功!
Mesher简介
什么是Mesher
Mesher是Service Mesh的一个具体的实现,是一个轻量的代理服务以Sidecar的方式与微服务一起运行。
Service Mesh是由William Morgan定义:
Service Mesh是一个基础设施层,用于处理服务间通信。云原生应用有着复杂的服务拓扑,Service Mesh保证请求可以在这些拓扑中可靠地传输。在实际应用当中,Service Mesh通常是由一系列轻量级的网络代理组成的,它们与应用程序部署在一起,但应用程序不需要知道它们的存在。
随着云原生应用的崛起,Service Mesh逐渐成为一个独立的基础设施层。在云原生模型里,一个应用可以由数百个服务组成,每个服务可能有数千个实例,而每个实例可能会持续地发生变化。服务间通信不仅异常复杂,而且也是运行时行为的基础。管理好服务间通信对于保证端到端的性能和可靠性来说是非常重要的。
Service Mesh实际上就是处于TCP/IP之上的一个抽象层,假设底层的L3/L4网络能够点对点地传输字节(同时,也假设网络环境是不可靠的,所以Service Mesh必须具备处理网络故障的能力)。
从某种程度上说,Service Mesh有点类似TCP/IP。TCP对网络端点间传输字节的机制进行了抽象,而Service Mesh则是对服务节点间请求的路由机制进行了抽象。Service Mesh不关心消息体是什么,也不关心它们是如何编码的。应用程序的目标是“将某些东西从A传送到B”,而Service Mesh所要做的就是实现这个目标,并处理传送过程中可能出现的任何故障。
与TCP不同的是,Service Mesh有着更高的目标:为应用运行时提供统一的、应用层面的可见性和可控性。Service Mesh将服务间通信从底层的基础设施中分离出来,让它成为整个生态系统的一等公民——它因此可以被监控、托管和控制。
为什么要使用Mesher
- 业务代码无须改造
- 支持老旧应用接入
- 普通应用快速成为云原生应用
- 业务代码零侵入
基本实现原理
Mesher是L7层协议代理,Mesher以Sidecar模式运行在应用所在的Pod内,与Pod共享网络与存储:
- Pod中的应用使用Mesher作为http代理,可以自动发现其他服务。
- Mesher会代替Pod中的应用向注册中心注册应用相关信息,以便让其他应用发现。
发起一次网络请求的过程中存在微服务消费者consumer和提供者provider,场景如下:
- 场景一:仅consumer使用Mesher作为Sidecar。
provider需要自己实现服务注册发现,或者使用Java开发框架,否则通过Mesher接入的consumer无法发现provider。
应用间的网络请求如下:
consumer-> Mesher -> provider
- 场景二:consumer、provider均使用Mesher作为Sidecar。
应用间的网络请求如下:
consumer -> Mesher -> Mesher ->provider
- 场景三:仅provider使用Mesher作为Sidecar
应用间的网络请求如下:
consumer-> Mesher -> provider
注意事项
应用上云后需要做出一定的配置变更。例如在Mesher所处环境外,consumer在访问provider时使用http://IP:port/进行访问。在使用Mesher后,使用http://provider:port/即可进行访问,接入说明将详细讲解。