注册中心设计(1)-注册中心的作用及设计分析

1.1 服务注册中心是啥?

用来实现微服务实例的自动注册与发现。

1.2 没有注册中心时

若服务依赖如下:

注册中心设计(1)-注册中心的作用及设计分析插图

服务还不是很多,于是很多人就把各服务节点直接放进一个全局的配置文件

 A 服务的全部 host
B 服务的全部 host
...

将该文件放在每个服务的远程配置中心或者本地配置文件中维护。当变更时,只有确实需要改变的服务团队才会修改其配置文件,最后就变成:

  • 需全局配置文件
  • 各模块各自维护

变更时就很不方便,每当服务扩缩容需更改配置时,很多服务都要跟着变更,团队之间沟通成本高,上线风险大。

于是,催生了注册中心。

1.3 注册中心的主要功能

注册中心设计(1)-注册中心的作用及设计分析插图1

1.3.1 服务注册

Provider将自身信息注册到Registery,供Consumer获取用于与Provider建立连接并发起调用。

  • 路由信息:注册服务节点的IP、端口等路由信息
  • 服务信息:支持的序列化协议、路由规则、节点权重
1.3.2 服务发现

Consumer通过访问Registery获取Provider的节点路由信息

  • 启动拉取:Consumer启动后就从Registery拉取Provider节点列表、建立连接、进行RPC调用
  • 通知回调(push变更配置):接受Registery变更通知。重新获取数据,更新节点列表
  • 轮询拉取(pull 兜底):Consumer运行过程中定时拉取Provider节点列表,以更新本地数据
1.3.3 健康检查

注册中心设计(1)-注册中心的作用及设计分析插图2

确保已注册节点的健康度,及时准确剔除失效的节点,以保证服务发现正确性

失效原因
  • 部署重启、异常终止
    上报心跳解决
  • 服务假死
    可能工作线程都异常,但上报心跳线程还正常。这就需要定制开发服务探测
1.3.4 变更通知

注册中心设计(1)-注册中心的作用及设计分析插图3

当Provider节点变更时,Registery应能立即将 变更事件或变更后的数据 推送到服务订阅方。

订阅与通知:注册中心内为每个服务提供方建立订阅列表,当服务方节点变更时通知所有订阅该服务的消费方节点。

文章来源于互联网:注册中心设计(1)-注册中心的作用及设计分析

THE END
分享
二维码