Mesher集成了注册发现、负载均衡、熔断降级、路由管理、调用链等微服务功能,通过mesher,微服务开发不再依赖开发框架,用户可选择自己习惯的语言,以极低成本进行新的微服务开发,也可以零成本将旧应用微服务化。
cse mesher调用拓扑图来如下,调用关系是:client->server1->server2。我们以server1为例进行分析。
Cse Mesher的功能由两个Proxy实现:
1,出流量,经过正向代理proxy
2,入流量,经过反向代理reverse_proxy
Mesher接收用户发出的请求,解析用户想要访问的服务,并经负载均衡,路由策略等功能,将请求转发到具体的服务端。
当用户将mesher设置为http代理后,用户发出的请求将被mesher接收并转发。例如,用户打算访问server2,rest接口为/hello,则用户的只需发送请求: http://server2/hello,mesher从url中解析出用户打算访问的服务为server2,并从注册中心查询server2的地址,将请求转发至server2。
Mesher接收外部请求,将请求转发至后端的service。
mesher将自己的监听地址注册到注册中心。
客户端mesher的Proxy接收用户请求,从注册中心查询服务端的地址,将请求转发至服务端(实际发送到了服务端mesher)。
服务端mesher的reverse_proxy接收外部请求,将请求转发到自己的后端。
若mesher监听在内部ip,如127.0.0.1:30101,mesher将只开启正向代理proxy。
由于正向代理proxy只能向外转发请求,因此用户只能发出请求,无法接收请求,即只能作为consumer。
1 2 3 4 |
|
若mesher监听在外部ip,如192.168.1.1:30101,mesher将同时开启reverse_proxy/proxy,分别监听在192.168.1.1:30101/127.0.0.1:30101(相同端口,不同ip)。
由于两个Proxy都开启,mesher可同时作为consumer/provider。
1 2 3 4 |
|
以上配置位于conf/chassis.yaml文件
问:若要使用mesher,需要用户自己把mesher设置为http代理么?
答:是的。用户程序需要将mesher设置为http代理。不同语言设置方法不同,具体的例子可参考《华为service mesh使用指南-快速入门(虚机,windows)》
问:mesher接收外部请求,并将请求转发到后端的服务,但mesher怎么知道后端服务的地址?
答:mesher读取环境变量SPECIFIC_ADDR作为后端服务地址,例如后端服务监听地址为127.0.0.1:80,则mesher启动前设置环境变量:export SPECIFIC_ADDR=127.0.0.1:80
问:每个进程都要绑定一个mesher?
答:每启动一个服务进程,就要绑定一个mesher。
问:配置mesher时,什么时候监听在内部ip,什么时候监听在外部ip?
答:mesher监听在内部ip时,只能作为consumer。监听在外部Ip时,可同时作为consumer/privider。建议都监听在外部ip。
问:同一台机器上,能不能启动多个mesher?
答:可以。但注意修改监听端口,避免端口冲突。
问:mesher默认监听了那些地址?
答:mesher默认监听了30101和30102端口,30101是代理/反向代理端口,30102是admin API端口。当修改mesher监听端口时,请避开这些端口。