华为service mesh使用指南-实现原理

Mesher集成了注册发现、负载均衡、熔断降级、路由管理、调用链等微服务功能,通过mesher,微服务开发不再依赖开发框架,用户可选择自己习惯的语言,以极低成本进行新的微服务开发,也可以零成本将旧应用微服务化。

 

拓扑

cse mesher调用拓扑图来如下,调用关系是:client->server1->server2。我们以server1为例进行分析。

华为service mesh使用指南-实现原理_第1张图片


server1细节放大后如图所示。
华为service mesh使用指南-实现原理_第2张图片

 

Cse Mesher的功能由两个Proxy实现:

1,出流量,经过正向代理proxy

2,入流量,经过反向代理reverse_proxy

 

 

Proxy

Mesher接收用户发出的请求,解析用户想要访问的服务,并经负载均衡,路由策略等功能,将请求转发到具体的服务端。

当用户将mesher设置为http代理后,用户发出的请求将被mesher接收并转发。例如,用户打算访问server2,rest接口为/hello,则用户的只需发送请求: http://server2/hello,mesher从url中解析出用户打算访问的服务为server2,并从注册中心查询server2的地址,将请求转发至server2。

 

Reverse_proxy

Mesher接收外部请求,将请求转发至后端的service。

 

工作流程

mesher将自己的监听地址注册到注册中心。

客户端mesher的Proxy接收用户请求,从注册中心查询服务端的地址,将请求转发至服务端(实际发送到了服务端mesher)。

服务端mesher的reverse_proxy接收外部请求,将请求转发到自己的后端。

华为service mesh使用指南-实现原理_第3张图片

 

配置

若mesher监听在内部ip,如127.0.0.1:30101,mesher将只开启正向代理proxy。

由于正向代理proxy只能向外转发请求,因此用户只能发出请求,无法接收请求,即只能作为consumer。

1

2

3

4

cse:

  protocols:

    http:

      listenAddress: 127.0.0.1:30101

 

若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

cse:

  protocols:

    http:

      listenAddress: 192.168.1.1:30101

 

以上配置位于conf/chassis.yaml文件

 

FAQ

问:若要使用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监听端口时,请避开这些端口。

你可能感兴趣的:(技术剖析)