《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——七、元数据中心(3) https://developer.aliyun.com/article/1223683
3) 高级配置
完整配置参数请参考metadata-report-config。
4) 工作原理
a) 服务运维元数据
Zookeeper基于树形结构进行数据存储,它的元数据信息位于以下节点:
当version或者group不存在时,version路径和group路径会取消,路径如下:
通过zkCli get操作查看数据。
Provider node:
Consumer node:
b) 地址发现-接口-应用名映射
在Dubbo 3.0中,应用级服务发现需要能够通过interface name去找到对应的application name,这个关系可以是一对多的,即一个service name可能会对应多个不同的application name。在3.0中,元数据中心提供此项映射的能力。
Zookeeper
在上面提到,service name和application name可能是一对多的,在zookeeper中,使用单个key-value进行保存,多个application name通过英文逗号隔开。由于是单个key-value去保存数据,在多客户端的情况下可能会存在并发覆盖的问题。因此,我们使用zookeeper中的版本机制version去解决该问题。
在zookeeper中,每一次对数据进行修改,dataVersion都会进行增加,我们可以利用version这个机制去解决多个客户端同时更新映射的并发问题。不同客户端在更新之前,先去查一次version,当作本地凭证。在更新时,把凭证version传到服务端比对version,如果不一致说明在次期间被其他客户端修改过,重新获取凭证再进行重试(CAS)。目前如果重试6次都失败的话,放弃本次更新映射行为。
Curator api.
映射信息位于:
通过zkCli get操作查看数据。
c) 地址发现-接口配置元数据
要开启远程接口配置元数据注册,需在应用中增加以下配置,因为默认情况下Dubbo3应用级服务发现会启用服务自省模式,并不会注册数据到元数据中心。
或者,在自省模式模式下仍开启中心化元数据注册
Zookeeper的应用级别元数据位于/dubbo/metadata/{application name}/{revision}
《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——七、元数据中心(5) https://developer.aliyun.com/article/1223680