dubbo禁用服务,但消费者还是能访问,为什么会这样,求解

dubbo-admin禁用所有服务:
图片说明
服务方provider1执行结果:
图片说明
服务方provider2执行结果:
图片说明
很明显的看到服务方provider1 还是被调用了,但我把这两个服务全部禁用掉了,为什么还会出现这种原因,求大神解释一下原因

8个回答

我现在也在使用duboo+zookeeper,遇到了这个一模一样的问题(dubbo禁用服务,但消费者还是能访问).
我各种查找资料,梳理源码仍旧找不到解决方案.
请问你现在有解决方案吗?

ecm7324
voc2048 同问~~
2 年多之前 回复
wxlzmt
张小白 回复永不言败-lzw: 没有
2 年多之前 回复
qq_20124743
永不言败-lzw 回复张小白: 现在有解决方案了吗?
接近 3 年之前 回复
wxlzmt
张小白 回复qq_39417134: 没有
接近 3 年之前 回复
qq_39417134
qq_39417134 你现在有解决方法了吗?
大约 3 年之前 回复

我也遇到一样的问题,可以通过服务屏蔽解决。

我测试发现多个提供者的情况下是禁用有效的,如果所有提供者都被禁用了,那么和所有提供者全部启用是一个效果

这个问题我之前提issue 问过开发者,意思是说当服务就剩一个时候禁用会导致服务不可用,所以不允许剩下一个服务的时候对服务进行禁用操作

重启zookeeper试一下。

Dubbo服务提供者选择逻辑:
只有一个提供者:
直接选择
有两个提供着:
轮训,重试的时候优先选择没有调用过的
超过两个提供者:
1、首先根据负载均衡算法选出一个提供者(默认是随机算法)。
2、判断随机出来的被调用过(这里只有重试的时候才可能为true),或者提供者不可用,则按如下逻辑重新选择一个
a)如果配置了提供者可用检测,则从所有提供着中选择一个可用的,并且没有被调用过的
b)如果没有配置提供者可用检测,则从所有提供着中找出所有未调用过的,如果超过1个,则用负载均衡算法随机选择一个
c)如果上面两种方式都没有找到,则从所有已经调用过的提供者找出所有可用的,如果超过1个,则用负载均衡算法随机选择一个
3、如果第2步也没有选择出来,则按如下逻辑重新选择一个
a)先找出第1步中选择出的提供者在数组中的位置,如果它不是最后一个,那么就取它后面的一个,否则就返回它自己

总结以上:一个直接使用,两个轮训未用过的,超过两个尽量找未用过且可用的,次之已调用过的可用的,最后无论如何选择一个,即使是不可用。

dubbo服务禁用后,重启下又会失效了

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐