问题
DUBBO 2.5.3版本使用分组group进行注册存在bug,在使用zk注册或者注销的时候,dubbo是依据接口全称创建zk节点,并未设置分组节点和版本节点,在集群较大,分组较多的情况下,一旦项目注册或者注销的服务较多,dubbo会频繁的读取相同的节点(仅以接口为路径),这就造成了zk会有大量重复输出流量,导致提供服务的能力急速下降。
解决方案
修复的方法就是注册和查找服务的时候,有分组的加上一个分组zk节点,这样就能准确找到具体的服务而不是找这个接口下面所有服务。以下是在测试环境测试的结果
压测验证数据
测试材料如下
实例 | 接口个数 | 分组个数 | dubbo服务数 |
服务端4台 | 1 | 60 | 单台注册60个服务 |
消费端4台 | 1 | 60 | 单台消费60个服务 |
修复前后测试结果对比(ps:流量监控使用nload):
初次启动:
同时启动服务器个数 | zk流量(修复前) | zk流量(修复后) | 流量 持续时间(修复前) | 流量 持续时间(修复后) |
1台提供者 | 12Mbit/s | 0.3Mbit/s | 5s | 5s |
2台提供者 | 25Mbit/s | 0.3Mbit/s | 5s | 5s |
1台消费者 | 7Mbit/s | 0.4Mbit/s | 8s | 5s |
2台消费者 | 9Mbit/s | 0.4Mbit/s | 10s | 10s |
重启服务端:
同时启动服务个数 | 注销服务时zk流量(修复前) | 注销服务时zk流量(修复后) | 注销服务时流量持续时间(前) | 注销服务时流量持续时间(后) | 注册服务时流量(前) | 注册服务时流量(后) | 注册服务时流量 持续时间(前) | 注册服务时流量 持续时间(后) |
1台服务端 | 19Mbit/s | 1.1Mbit/s | 4s | 1s | 82Mbit/s | 1.1Mbit/s | 30s | 1s |
2台服务端 | 34Mbit/s | 1.5Mbit/s | 6s | 1s | 110Mbit/s | 1.2Mbit/s | 180s | 1s |
Dubbo 2.5.3版本中发现使用分组group进行注册存在BUG,此BUG会导致Zookeeper流量激增,严重影响服务性能。通过在注册和查找服务时增加分组节点,有效降低了流量消耗。

166

被折叠的 条评论
为什么被折叠?



