基于OpenResty与Consul实现服务网格ServiceMesh

一、逻辑架构

 

1、基于OpenResty开发智能代理,利用其动态可编程特性,动态化配置nginx服务路由。

2、可能需要向OpenResty添加weibo开源的upsync服务发现模块。

3、基于consul建设微服务注册中心集群。

4、服务网格中的每个node包括至少一个智能代理,若干个微服务,各个node和注册中心一起构成一个服务网格

5、每个微服务启动时需向注册中心上报自身服务信息,包括ip,端口,服务名等。

6、智能代理根据自身的配置和需求从注册中心pull相应的动态服务列表信息,并在本地落地做兜底,防止注册中心不可用的情况。

7、至此,对于每个微服务:

1)对外访问可通过要访问的服务名由智能代理提供upstream动态负载均衡访问。

2)对外提供服务则只需在启动时调用rest API向注册中心集群提供自身服务信息即可。

二、组件功能需求

1、智能proxy

(1)配置并存放服务注册中心URL、配置本node需要的外部服务list

(2)负责发送(转发)本node上各个service的服务注册请求到服务注册中心。

(3)根据外部服务list到服务注册中心动态获取服务详细信息,通过openresty内嵌lua脚本动态生成本地配置locationproxy_passupstream等,供本node节点的service调用。

2、服务注册中心

(1)存储各service服务信息。

(2)高可用、无单点故障问题。

(3)有统一的管理界面用于各个nodeservice的查看、健康监控等。

(4)提供rest API用于服务的注册、服务删除等。

猜你喜欢

转载自www.cnblogs.com/lyhero11/p/11713252.html