码迷,mamicode.com
首页 > 其他好文 > 详细

dubbox 黑名单存在多个时导致访问控制完全失效

时间:2020-05-07 00:31:06      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:ram   tco   源码   黑名单   public   问控制   项目   bool   apache   

背景

项目部署到了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

dubbox 黑名单存在多个时导致访问控制完全失效

标签:ram   tco   源码   黑名单   public   问控制   项目   bool   apache   

原文地址:https://www.cnblogs.com/daleyzou/p/dubbox-condition-bug.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!