在Dubbo微服务体系中,注册中心是其核心组件之一.Dubbo通过注册中心实现了分布式环境中各微服务之间的注册与发现,是各分布式节点之间的纽带.其主要作用如下:
Dubbo的注册中心源码在模块dubbo-register中,里面包含了五个子模块,如下所示:
模块名称 | 模块介绍 |
---|---|
dubbo-register-api | 包含了注册中心所有API和抽象实现类 |
dubbo-register-zookeeper | 使用zookeeper作为注册中心的实现 |
dubbo-register-redis | 使用redis作为注册中心的实现 |
dubbo-register-default | Dubbo基于内存的默认实现 |
dubbo-register-multicast | multicast模式的服务注册与发现 |
[站外图片上传中...(image-5ed3a3-1566707698948)]
Zookeeper是树形结构的注册中心,每个节点的类型分为持久节点、持久顺序节点、临时节点和临时顺序节点。
Dubbo使用Zookeeper作为注册中心时,只会创建持久节点和临时节点两种,对创建顺序并没有要求。
dubbo早zookeeper中的树形结构如下所示:
+ /dubbo
+ -- servicce
+--providers
+--consumers
+--routers
+--configurators
(1)树的根节点是注册中心分组,下面有多个服务接口,分组值来自用户配置<dubbo:register>中的group属 性;
(2)服务接口下包含4类子目录,分别是providers、consumers、routes、configurators,这个路径是持久节点;
(3)服务提供者目录(/dubbo/service/providers)下面包含的接口有多个服务者URL元数据信息;
(4)服务消费者目录(/dubbo/service/consumers)下面包含的接口有多个消费者URL元数据信息;
(5)路由配置目录(/dubbo/service/routes)下面包含多个消费者路由策略URL元数据信息。
(6)动态配置目录(/dubbo/service/configurators)下面包含多个用于消费者由策略URL元数据信息。
在Dubbo中启用注册中心可参考如下方式:
<beans>
<!--适用于Zookeeper一个集群有多个节点,多个IP和端口用逗号分隔-->
<dubbo:registry protocol="zookeeper" address="ip:port,ip:port" />
<!--适用于Zookeeper一个集群有多个节点,多个IP和端口用竖线分隔-->
<dubbo:registry protocol="zookeeper" address="ip:port|ip:port" />
</beans>