《Apache Dubbo微服务开发从入门到精通》——配置手册——五、 配置工作原理(5) https://developer.aliyun.com/article/1225128
3) 外部化配置
外部化配置目的之一是实现配置的集中式管理,这部分业界已经有很多成熟的专业配置系统如Apollo,Nacos等,Dubbo所做的主要是保证能配合这些系统正常工作。
外部化配置和其他本地配置在内容和格式上并无区别,可以简单理解为dubbo.properties的外部化存储,配置中心更适合将一些公共配置如注册中心、元数据中心配置等抽取以便做集中管理。
• 优先级
外部化配置默认较本地配置有更高的优先级,因此这里配置的内容会覆盖本地配置值,关于各配置形式间的覆盖关系有单独一章说明。
• 作用域
外部化配置有全局和应用两个级别,全局配置是所有应用共享的,应用级配置是由每个应用自己维护且只对自身可见的。当前已支持的扩展实现有Zookeeper、Apollo、Nacos。
外部化配置使用方式
a) 增加config-center配置
b) 在相应的配置中心(zookeeper、Nacos等)增加全局配置项,如下以Nacos为例:
开启外部化配置后,registry、metadata-report、protocol、qos等全局范围的配置理论上都不再需要在应用中配置,应用开发侧专注业务服务配置,一些全局共享的全局配置转而由运维人员统一配置在远端配置中心。
这样能做到的效果就是,应用只需要关心:
• 服务暴露、订阅配置
• 配置中心地址
当部署到不同的环境时,其他配置就能自动的被从对应的配置中心读取到。
举例来说,每个应用中Dubbo相关的配置只有以下内容可能就足够了,其余的都托管给相应环境下的配置中心:
自行加载外部化配置
所谓Dubbo对配置中心的支持,本质上就是把.properties从远程拉取到本地,然后和本地的配置做一次融合。理论上只要Dubbo框架能拿到需要的配置就可以正常的启动,它并不关心这些配置是自己加载到的还是应用直接塞给它的,所以Dubbo还提供了以下API,让用户将自己组织好的配置塞给Dubbo框架(配置加载的过程是用户要完成的),这样Dubbo框架就不再直接和Apollo或Zookeeper做读取配置交互。