频道首页
目录
03.服务注册中心
收藏
0
服务注册中心
1.什么是服务注册中心
所有提供者将自己提供服务的名称及自己主机详情(IP、端口、版本等)写入到另一台主机中的一个列表中,这台主机称为服务注册中心,而这个表称为服务注册表
所有消费者需要调用微服务时,其会从注册中心首先将服务注册表下载到本地,然后根据消费者本地设置好的负载均衡策略选择一个服务提供者进行调用。这个过程称为服务发现
2.相关的三种角色
- 服务提供者:在启动时,向 Registry 注册自身服务,并向 Registry 定期发送心跳汇报存活状态
- 服务消费者:在启动时,向 Registry 订阅服务,把 Registry 返回的服务节点列表缓存在本地内存中,并与 RPC Sever 建立连接
- 服务注册中心:用于保存 RPC Server 的注册信息,当 RPC Server 节点发生变更时,Registry 会同步变更,RPC Client 感知后会刷新本地 内存中缓存的服务节点列表
3.服务注册中心架构
4.服务注册中心需要实现的功能
图示
核心功能
服务注册
- 服务提供方将自身路由信息发布到注册中心,供消费方获取用于与提供方建立连接并发起调用
- 路由信息:注册服务节点IP、监听端口等路由信息
- 服务信息:序列化协议,路由规则,节点权重
服务发现
- 服务消费方通过访问注册中心获取服务提供方节点路由信息
- 启动拉取:服务消费方启动后,从注册中心拉取提供方节点列表,建立连接,进行RPC调用
- 通知回调:接受注册中心变更通知,重新获取数据,更新节点列表
- 轮训拉取:服务消费方运行过程中定时拉取服务提供方节点列表,用来更新本地数据
服务健康检查
- 确保已注册节点健康度,能够及时准确剔除失效节点,保证服务发现正确性
- 失效原因:部署重启,服务假死,异常终止
- 解决方案:上报心跳,服务探测
服务变更通知
- 当服务提供方节点发生变更时,注册中心应该能够第一时间把变更事件或变更后的数据推送到服务订阅方
- 注册中心内为每个服务提供方建立订阅列表,当服务方节点变更时通知所有订阅该服务的消费方节点
服务剔除
当健康检查判断某个服务节点不正常的时候,需要能够进行服务节点的剔除
服务下线
- 服务停机
- 服务平滑上下线
5.开源的服务注册中心对比
6.服务注册中心选择原则
- CP/AP:选择 AP,因为可用性高于一致性(大多数场景)
- 生态圈:生态是否健全
- 社区活跃度:社区是否活跃
- 文档:文档是否健全
- 大厂背书:是否有大厂背书
- 功能:功能是否健全和强大
- 语言支持:语言是否贴合是否容易二开
- Spring:如果是Java语言实现的那么对于是否能够整合Spring是非常重要的
主页
会议室
文章
看板
讨论
AI文档