Dubbo Impls Config Center¶
设计目的¶
配置中心的核心功能是作为Key-Value存储,Dubbo框架告知配置中心其关心的key,配置中心返回该key对应的value值。
按照应用场景划分,配置中心在Dubbo框架中主要承担以下职责:
- 作为外部化配置中心,即存储
dubbo.properties
配置文件,此时,key值通常为文件名如dubbo.properties
,value则为配置文件内容 - 存储单个配置项,如各种开关项、常量值等
- 存储服务治理规则,此时key通常按照
服务名+规则类型
的格式来组织,而value则为具体的治理规则
扩展接口¶
org.apache.dubbo.configcenter.DynamicConfigurationFactory
org.apache.dubbo.configcenter.DynamicConfiguration
已知扩展¶
org.apache.dubbo.configcenter.support.zookeeper.ZookeeperDynamicConfigurationFactory
org.apache.dubbo.configcenter.support.zookeeper.NacosDynamicConfigurationFactory
org.apache.dubbo.configcenter.support.zookeeper.EtcdDynamicConfigurationFactory
org.apache.dubbo.configcenter.support.zookeeper.ConsulDynamicConfigurationFactory
org.apache.dubbo.configcenter.support.zookeeper.ApolloDynamicConfigurationFactory
实现原理¶
ZooKeeper¶
ZooKeeper提供了一个树状的存储模型,其实现原理如下:
configcenter_zk_model
namespace, group, key等分别对应不同层级的ZNode节点,而value则作为根ZNode节点的值存储
外部化配置中心
dubbo.properties
configcenter_zk_properties
单个配置项
configcenter_zk_singleitem
服务治理规则
configcenter_zk_rule
Dubbo同时支持应用、服务两种粒度的服务治理规则,对于这两种粒度,其key取值规则如下:
- 应用粒度
应用名 + 规则后缀
。如:demo-application.configurators
demo-application.tag-router
- 服务粒度
服务接口名:[服务版本]:[服务分组] + 规则后缀
,其中服务版本、服务分组是可选的,如果它们有配置则在key中体现,没被配置则用:
占位。如:org.apache.dubbo.demo.DemoService::.configurators
org.apache.dubbo.demo.DemoService:1.0.0:group1.configurators