一、逻辑架构
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脚本动态生成本地配置location、 proxy_pass、upstream等,供本node节点的service调用。
2、服务注册中心
(1)存储各service服务信息。
(2)高可用、无单点故障问题。
(3)有统一的管理界面用于各个node和service的查看、健康监控等。
(4)提供rest API用于服务的注册、服务删除等。