1. 原理
- 服务提供者:提供服务,在启动时,根据服务发布文件中的配置的信息,向注册中心注册自身服务,并向注册中心定期发送心跳汇报存活状态。
- 服务消费者:调用服务,在启动时,根据服务引用文件中配置的信息,将注册中心订阅服务,把注册中心返回的服务节点列表缓存在本地内存中,并于服务提供者建立连接
- 当服务提供者节点发生变更时,注册中心会同步变更。服务消费者感知后会刷新本地缓存的服务节点列表
- 服务消费者从本地缓存的服务节点列表中,基于负载均衡算法选择服务提供者的一个节点发起调用
2. 注册中心需要提供的接口
- 服务注册接口
- 服务反注册(注销)接口
- 心跳汇报接口:服务提供者通过调用该接口完成节点存活状态上报
- 服务订阅接口:服务消费者订阅后,当注册中心感知节点状态变化,会通知消费者
- 服务变更查询接口:服务消费者获取最新的可用服务节点列表
后台管理接口
- 服务查询接口:查询注册中心当前还注册了哪些服务信息
- 服务修改接口:修改注册中心某一服务的信息
3. 注册中心的特点
- 注册中心时服务提供者和服务消费者之间沟通的桥梁,所以必须要保证高可用性,一般采取集群部署
- 在集群部署中,通过分布式一致性协议来确保各个节点之间的数据一致性
- 注册中心一般基于tcp连接,长连接,通过心跳机制来检测服务健康状态
- 一旦注册中心探测到有服务提供者节点的变更,就必须通知所有订阅该服务的服务消费者,刷新本地缓存的服务节点信息,确保服务调用不会请求到不可用的服务提供者节点
- 白名单机制:注册中心可以提供一个白名单机制,只有注册到注册中心白名单内的服务提供者才能够调用注册中心的注册接口。
|