注册中心如何存储服务信息
服务信息都包含哪些内容?
- 分组
- 服务名
- 节点信息
将服务分组:
- 核心程度
- 机房
- 线上/测试环境
具体存储的时候,一般是按照“服务 - 分组 - 节点信息”三层结构来存储:
- Service 代表服务的具体分组
- Cluster 代表服务的接口名
- 节点信息用 KV 存储
注册中心具体是如何工作的
1. 注册节点
- Cluster: 服务的接口名
- Service: 服务的分组
2. 如何反注册
3. 如何查询节点信息
- local cache: 在内存中的节点信息
- snapshot: 在磁盘上的节点信息. 本机重启后发现注册中心不可用的场景.
4. 如何订阅服务变更
比较配置签名.
注册与发现的几个问题
多注册中心
对于服务消费者来说,要能够同时从多个注册中心订阅服务;对于服务提供者来说,要能够同时向多个注册中心注册服务。
并行订阅服务
避免某个服务连接超时, 导致后面的服务等待.
批量反注册服务
对于下线机器、节点销毁的场景,通过调用注册中心提供的批量反注册接口,一次调用就可以把该节点上提供的所有服务同时反注册掉,从而避免了“僵尸节点”的出现。
避免一个一个的反注册过程中, 由于网络波动导致的反注册失败出现僵尸节点, 批量一次搞定.
服务变更信息增量更新
- 减少服务消费者从注册中心中拉取的服务可用节点信息的数据量
- 最大程度避免产生网络风暴