dubbox 黑名单存在多个时导致访问控制完全失效
背景
项目部署到了172.16.5.27,172.16.5.28,172.16.5.29,172.16.5.30共四个节点
使用条件路由下的黑名单
host = 172.16.28.242 => host = 172.16.5.27,172.16.5.28
我将指定的消费者(172.16.28.242)去调用指定的生产者(172.16.5.27,172.16.5.28),发现黑名单的条件路由完全失效了
如果我黑名单只一个就是可以的 host = 172.16.28.242 => host = 172.16.5.27
分析
1、使用的当当的dubbox,版本是2.8.2,2015年以后就没有维护了
2、dubbo 这个老版本源码的问题,源码位于:com.alibaba.dubbo.rpc.cluster.router.condition.ConditionRouter.MatchPair#isMatch
public boolean isMatch(String value, URL param) { for (String match : matches) { if (! UrlUtils.isMatchGlobPattern(match, value, param)) { return false; } } for (String mismatch : mismatches) { if (UrlUtils.isMatchGlobPattern(mismatch, value, param)) { return false; } } return true; }
3、应该全部判断完都不匹配后,才返回false,而不是一个不匹配就返回false
参考链接
https://github.com/dangdangdotcom/dubbox/issues/181
(官方相关脚本源码解读)http://dubbo.apache.org/zh-cn/docs/source_code_guide/router.html
相关推荐
ATenhong 2020-10-15
supperme 2020-09-08
doctorvian 2020-08-02
aNian 2020-08-01
kongjunlongaa 2020-06-29
Fightingxr 2020-06-26
whileinsist 2020-06-24
doctorvian 2020-06-16
XuNeely 2020-06-16
wangyangsoftware 2020-06-16
大步流星 2020-06-16
aNian 2020-06-16
gaoyongstone 2020-06-16
MartellJenkins 2020-06-11
范群松 2020-06-11
Fightingxr 2020-06-08
XuNeely 2020-06-07
大步流星 2020-06-05