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

1.1 服务注册中心是啥?

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

1.2 没有注册中心时

若服务依赖如下:

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

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

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

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

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

于是,催生了注册中心。

1.3 注册中心的主要功能

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.3.4 变更通知

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

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

2024系统设计面试指南 文章被收录于专栏

面向 2024 校招/社招全网最新最全的系统设计面试。八年开发经验,毕业四年成为技术专家兼架构师,乐于知识分享,擅长图文讲解各种软件技术! 现如今,牛客网人均某马点评,但本质都是系统设计考量点,如: 1.多级缓存设计,如何保证缓存跟数据库的一致性? 2.设计模式,各种业务流程,到底何时何地使用何种模式? 3.玩转分布式框架 ... 更多技术重难点设计,尽在本专栏!

全部评论
感谢楼主分析的注册中心设计
1 回复 分享
发布于 2022-08-08 13:43
这就是我,他们的道理会换人了,没有,就是拼错了,牛牛牛牛牛,让我答题。
点赞 回复 分享
发布于 2022-08-25 12:14 北京

相关推荐

评论
2
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务