今天公司給大家演示基於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還有不少需要改進的地方啊。
