Dubbo 配置中心、元数据中心
配置中心
每个服务的配置都写在自己的配置文件中,更新配置时要一台机器一台机器地修改,很不方便,
dubbo一般使用zk作为配置管理中心,统一管理dubbo的配置,也有用diamond的。
dubbo admin -> 配置管理 -> 创建
全局配置的名称使用global,对所有的服务提供者、消费者均有效,写一些公共配置,比如
#注册中心 dubbo.registry.address=zookeeper://192.168.1.9:2181 #连接超时 dubbo.registry.timeout=10000 #dubbo使用的协议、端口 dubbo.protocol.name=dubbo dubbo.protocol.port=20880
配置会保存在 zkServer的/dubbo/config 中,其中全局配置保存在config下面的 dubbo/dubbo.properties 中。
应用级别配置的名称使用服务名(dubbo.application.name),该配置只对指定的服务有效,一般写这个服务私有的配置,比如 dubbo.scan.base-packages 。
如果全局配置中也设置了相同的配置项,以应用级配置为准(越精细的优先级越高)。
使用配置中心后,提供者、消费者在springboot配置文件中不用写dubbo的其它配置,只写配置中心的配置即可:
#配置中心地址 dubbo.config-center.address=zookeeper://192.168.1.9:2181 #连接到配置中心的超时时间,ms dubbo.config-center.timeout=10000
应用启动时,会自动连接到配置中心,从配置中心获取dubbo的配置
dubbo.scan.base-packages 这种配置,如果觉得放在配置中心代码重构修改包位置时不方便,就放在springboot配置文件中也可以。
元数据中心
元数据中心用于存储一些服务提供者、消费者的信息,比如dubbo版本、服务接口的信息(包括方法名、形参表、返回值类型)等等。
dubbo支持2种元数据中心:zk、redis,此处以zk为例。
分别在消费者、提供者中加入元数据中心的依赖:
<dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-metadata-report-zookeeper</artifactId> <version>2.7.6</version> <scope>test</scope> </dependency>
使用redis作为元数据中心的话,把artifactId中的zookeeper换为redis即可。
版本号一般要用maven统一管理dubbo各个依赖的版本,做到dubbo的依赖都是同一版本。此处未统一管理版本。
看到作用域是test,就知道元数据中心这玩意儿是测试用的。
然后在全局配置中加上元数据中心的配置:
#元数据配置中心地址 dubbo.metadata-report.address=zookeeper://192.168.1.9:2181
一般配置个地址就可以了
重启应用来获取新的配置,看到zkServer上产生了一个新的节点 /dubbo/metadata,
metadata下面每个子节点都存储一个服务的元数据,provider、consumer分别存储该服务提供者、消费者的元数据,json格式,
数据有点乱,要看的话可以找个json格式化工具格式化一下。
元数据中心主要的功能是测试服务接口,配置元数据中心以后,可以在dubbo admin中测试服务接口。