分享会上演示Dubbo的路由规则,结果被小坑了下

 

今天公司给大家演示基于Dubbox的服务治理平台,结果因为开了vpn导致本机IP地址比较混乱,在配置路由规则的时候我这样配置条件路由

 

consumer.host=*.*.*.* => provider.host=192.168.1.2

  

结果不生效,查阅代码才发现是用一个 * 号来代表所有ip,代码如下:

public static boolean isMatchGlobPattern(String pattern, String value) {
        if ("*".equals(pattern))
            return true;
        if((pattern == null || pattern.length() == 0) 
                && (value == null || value.length() == 0)) 
            return true;
        if((pattern == null || pattern.length() == 0) 
                || (value == null || value.length() == 0)) 
            return false;
        
        int i = pattern.lastIndexOf('*');
        // 没有找到星号
        if(i == -1) {
            return value.equals(pattern);
        }
        // 星号在末尾
        else if (i == pattern.length() - 1) {
            return value.startsWith(pattern.substring(0, i));
        }
        // 星号的开头
        else if (i == 0) {
            return value.endsWith(pattern.substring(i + 1));
        }
        // 星号的字符串的中间
        else {
            String prefix = pattern.substring(0, i);
            String suffix = pattern.substring(i + 1);
            return value.startsWith(prefix) && value.endsWith(suffix);
        }
    }

  

看这段代码,估计以后只能进行一个网段的匹配了,还好公司的各个服务都有自己的ip段,只是演示的时候略尴尬,CTO正好听了这段演示一会,走了……

 

正确的路由规则参数 consumer.host=192.168.1.* => provider.host=192.168.1.2 ,Dubbo还有不少需要改进的地方啊。

posted @ 2017-03-30 20:16  Alex技术博客  阅读(3863)  评论(1编辑  收藏  举报