注册中心如何存储服务信息

服务信息都包含哪些内容?

  • 分组
  • 服务名
  • 节点信息

将服务分组:

  • 核心程度
  • 机房
  • 线上/测试环境

具体存储的时候,一般是按照“服务 - 分组 - 节点信息”三层结构来存储:

  • Service 代表服务的具体分组
  • Cluster 代表服务的接口名
  • 节点信息用 KV 存储

image.png

注册中心具体是如何工作的

1. 注册节点

image.png

  • Cluster: 服务的接口名
  • Service: 服务的分组

2. 如何反注册

image.png

3. 如何查询节点信息

image.png

  • local cache: 在内存中的节点信息
  • snapshot: 在磁盘上的节点信息. 本机重启后发现注册中心不可用的场景.

4. 如何订阅服务变更

image.png

比较配置签名.

注册与发现的几个问题

多注册中心

对于服务消费者来说,要能够同时从多个注册中心订阅服务;对于服务提供者来说,要能够同时向多个注册中心注册服务。

并行订阅服务

避免某个服务连接超时, 导致后面的服务等待.

批量反注册服务

对于下线机器、节点销毁的场景,通过调用注册中心提供的批量反注册接口,一次调用就可以把该节点上提供的所有服务同时反注册掉,从而避免了“僵尸节点”的出现。

避免一个一个的反注册过程中, 由于网络波动导致的反注册失败出现僵尸节点, 批量一次搞定.

服务变更信息增量更新

  • 减少服务消费者从注册中心中拉取的服务可用节点信息的数据量
  • 最大程度避免产生网络风暴