配置中心在 Dubbo 中承担两个职责:
外部化配置目的之一是实现配置的集中式管理,这部分业界已经有很多成熟的专业配置系统。Dubbo go 中对 Zookeeper、Nacos、Apollo 等做了支持。
外部化配置和其他本地配置在内容和格式上并无区别,配置中心更适合将一些公共配置如注册中心、元数据中心配置等抽取以便做集中管理。
同时,外部化配置有全局和应用两个级别,全局配置是所有应用共享的,应用级配置是由每个应用自己维护且只对自身可见的。并且,外部化配置的优先级默认高于本地配置。
本例以如何在 Zookeeper 上配置和使用外部化配置为例。更多的关于配置中心的描述请参阅 Dubbo 文档 。
以 Zookeeper 为例,应用级别和全局的外化配置将会以以下的布局存储在 Zookeeper 上。
dubbo └── config ├── dubbo │ └── dubbo.properties <- 全局 ├── user-info-client │ └── dubbo.properties <- 服务消费者 └── user-info-server └── dubbo.properties <- 服务提供者
全局配置准备 - 全局配置的默认路径为 “/dubbo/config/dubbo/dubbo.properties”。使用以下的命令来配置样例 dubbo.properties:
zkCli create /dubbo/config; \ zkCli create /dubbo/config/dubbo; \ zkCli create /dubbo/config/dubbo/dubbo.properties; \ zkCli set /dubbo/config/dubbo/dubbo.properties \ "dubbo.protocol.name=dubbo dubbo.protocol.port=20880"
服务提供方配置 - 假设服务提供方的应用名是 “user-info-server”,服务提供方应用级的配置的默认路径为 “/dubbo/config/user-info-server/dubbo.properties” 。使用以下的命令来配置样例 dubbo.properties:
zkCli create /dubbo/config; \ zkCli create /dubbo/config/user-info-server; \ zkCli create /dubbo/config/user-info-server/dubbo.properties; \ zkCli set /dubbo/config/user-info-server/dubbo.properties \ "dubbo.service.org.apache.dubbo.UserProvider.cluster=failfast dubbo.service.org.apache.dubbo.UserProvider.protocol=myDubbo dubbo.protocols.myDubbo.port=22222 dubbo.protocols.myDubbo.name=dubbo"
服务消费方配置 - 假设服务消费方的应用名是 “user-info-client”,服务提供方应用级的配置的默认路径为 “/dubbo/config/user-info-client/dubbo.properties” 。使用以下的命令来配置样例 dubbo.properties:
zkCli create /dubbo/config; \ zkCli create /dubbo/config/user-info-client; \ zkCli create /dubbo/config/user-info-client/dubbo.properties; \ zkCli set /dubbo/config/user-info-client/dubbo.properties \ "dubbo.service.org.apache.dubbo.UserProvider.cluster=failfast"
服务提供方与服务消费方配置配置中心的方式是一致的,如下所示:
# config center config config_center: protocol: "zookeeper" group: "user-info-server" address: "127.0.0.1:2181" # application config application: organization: "dubbo.io" name: "user-info-server" # 应用文件名,决定应用级外化配置
import (
_ "github.com/apache/dubbo-go/config_center/zookeeper"
)
请参阅根目录中的 HOWTO.md 来运行本例。