《Apache Dubbo微服务开发从入门到精通》——服务治理与生态——七、元数据中心(5) https://developer.aliyun.com/article/1223680
3) 高级配置
完整配置参数请参考metadata-report-config。
4) 工作原理
a) 服务运维元数据
在Nacos的控制台上可看到服务提供者、消费者注册的服务运维相关的元数据信息:
在Nacos中,本身就存在配置中心这个概念,正好用于元数据存储。在配置中心的场景下,存在命名空间- namespace的概念,在namespace之下,还存在group概念。即通过namespace和group以及dataId去定位一个配置项,在不指定namespace的情况下,默认使用public作为默认的命名空间。
当version或者group不存在时:依然保留:
Providers接口元数据详情(通过report-definition=true控制此部分数据是否需要上报):
Consumers接口元信息详情(通过report-consumer-definition=true控制是否上报,默认false):
b) 地址发现-接口-应用映射
在上面提到,service name和application name可能是一对多的,在nacos中,使用单个key-value进行保存,多个application name通过英文逗号隔开。由于是单个key-value去保存数据,在多客户端的情况下可能会存在并发覆盖的问题。因此,我们使用nacos中publishConfigCas的能力去解决该问题。
在nacos中,使用publishConfigCas会让用户传递一个参数casMd5,该值的含义是之前配置内容的md5值。不同客户端在更新之前,先去查一次nacos的content的值,计算出md5值,当作本地凭证。在更新时,把凭证md5传到服务端比对md5值,如果不一致说明在次期间被其他客户端修改过,重新获取凭证再进行重试(CAS)。目前如果重试6次都失败的话,放弃本次更新映射行为。
Nacos api:
映射信息位于namespace:public,dataId: {service name},group: mapping.
c) 地址发现-接口配置元数据
要开启远程接口配置元数据注册,需在应用中增加以下配置,因为默认情况下Dubbo3应用级服务发现会启用服务自省模式,并不会注册数据到元数据中心。
或者,在自省模式模式下仍开启中心化元数据注册
Nacos server中的元数据信息详情如下: