分享會上演示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還有不少需要改進的地方啊。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM