Dubbo 注册中心
Dubbo注册中心是实现分布式环境中各服务之间的注册和发现。
Dubbo注册中心的源码在dubbo-registry中主要分为5各模块:
- dubbo-registry-api 包含注册中心所有的API和抽象实现类;
- dubbo-registry-zookeeper 使用Zookpeer作为注册中心的实现’;
- dubbo-registry-redis 使用redis作为注册中心的实现;
- dubbo-registry-default dubbo基于内存的默认实现;
- dubbo-registry-multicast multicat模式的服务注册和发现;
注册中心的数据结构
Zookeeper:zookeeper是树形结构的注册中心,节点主要分为持久化节点、持久化顺序节点、临时节点、临时顺序节点。
Dubbo使用zookeeper作为注册中心时,只会创建持久化节点和临时节点。
树形结构的节点主要分为四层:
- root 注册中心的分类;
- service 接口名称
- type 四种服务目录之一(providers、consumers、configurations、routers)
- URL 每种服务目录的dubbo服务的URL
Redis:redis存储是以键值对的数据结构,也是分为四层去存,不过redis的key是root + service +type , value也是一个map,它的key是URL ,value是过期时间,因为redis存储是有有效期的。
注册中心的订阅机制是:
客户度第一次全量拉取节点下的所有数据,并向订阅的节点上注册一个watcher,保持一个TCP的长连接。后续客户端监听的节点有任何变动,监听器回调通知客户端,客户端收到通知以后,再从注册中心全量拉取该节点下的所有数据
注册中心的缓存:
注册中心或消费者在获取到注册信息后,会做本地缓存。一份放在内存中,保存在properties对象中,一份持久化到磁盘中,通过file对象进行引用。