dubbo:3.1.8
jdk:8
zookeeper:3.7.1
provider的Dubbo配置:
dubbo:
registries:
zonea:
address: zookeeper://localhost:2182
group: gray
zoneb:
address: zookeeper://localhost:2183
group: gray
comsumer的Dubbo配置:
dubbo:
registries:
zonea:
address: zookeeper://localhost:2182
cluster: xxxcluster
group: gray
zoneb:
address: zookeeper://localhost:2183
cluster: xxxcluster
group: gray
在provider的register指定了group,注册在zookeeper的信息都以/gray开头。但在暴露元数据信息时,serviceKey还是不带/gray的。在consumer自定义的cluster中去获取invoker的parameter,无法正常找到,因为consumer调用中认为serviceKey是带/gray的
7条答案
按热度按时间vd8tlhqk1#
单个注册中心正常不
xmjla07d2#
单注册中心没有问题,原因多注册中心时,getProtocolServiceKey()方法返回的是带/gray的服务名
这个服务名是通过上下文获得
在执行org.apache.dubbo.rpc.proxy.InvocationUtil.invoke(invoker, rpcInvocation)方法时将放入上下文的
invoker是在ReferenceConfig产生代理时传入的,在ReferenceConfig.createInvokerForRemote()时创建的
多注册中心情况下产生的invoker url是会带上registry的group属性,导致元数据匹配不上,这样是存在问题的吧?
c90pui9n3#
看起来是进了 cluster 模式的时候,group 被改成了 registry 的 group 了?
v8wbuo2f4#
@AlbumenJ 是这样的,debug发现 请求调用时会调用拓展的多注册中心cluster的getUrl方法放入上下文
而url生成的过程 运用了registry url的属性
6ss1mwsb5#
这个任务有人认领吗?没有的话,我认领下~
lmvvr0a86#
@songxiaosheng 大佬,PR地址: #12406
2sbarzqh7#
@shaonianxingzhong 这样修改好像没有解决问题,"进了 cluster 模式的时候,group 被改成了 registry 的 group了", 有没有办法修复这个问题呢?