路由規則
路由功能,就是 消費者 -> 提供者
即是根據配置的路由規則,找到提供者,
比如,讀寫分離 路由規則:
讀路由:
method = find*,list*,get*,is* => host = 172.22.3.94,172.22.3.95,172.22.3.96
這條規則會判斷讀方法,會呼叫172.22.3.94,172.22.3.95,172.22.3.96這幾個提供者的服務
寫路由:
method != find*,list*,get*,is* => host = 172.22.3.97,172.22.3.98
這條規則會判斷讀方法,會呼叫172.22.3.97,172.22.3.98這幾個提供者的服務
除讀寫分離路由規則,還有其他規則:
路由名稱:name
服務名:service(乙個路由規則只能對應乙個服務)
優先級別:priority(優級越高排序越前)
route: = find*,list*,get*,is* => host = 172.22.3.94,172.22.3.95,172.22.3.96)
下面是路由功能的實現:
private list> route(list> invokers, string method) }}
return invokers;
}
從上面4處的invocation引數,看出是對方法乙個乙個來進行路由對映方法的提供者列表的,route實現,看下面原始碼:
public list> route(list> invokers, url url, invocation invocation) throws rpcexception
try
list> result = new arraylist>();
if (thencondition == null)
for (invokerinvoker : invokers)
}if (result.size() > 0) else if (force)
} catch (throwable t)
return invokers;
}
其中
**的5處,判斷消費者是否匹配路由規則的左邊
比如,路由規則method = find*,list*,get*,is* => host = 172.22.3.94,172.22.3.95,172.22.3.96,
規則左邊,即判斷消費者呼叫的方法是讀方法
**的6處,判斷提供者是否匹配路由規則的右邊
就像上面這條路由規則,即判斷提供者是否這幾個host的服務,否則不會被對映到方法的提供列表。
自己寫了個rpc:
可以給個star,^0^.
dubbo讀書筆記13 路由規則
在此檢視老版本路由規則 2.6.x or before 路由規則在發起一次rpc呼叫前起到過濾目標伺服器位址的作用,過濾後的位址列表,將作為消費端最終發起rpc呼叫的備選位址。後續我們計畫在2.6.x版本的基礎上繼續增強指令碼路由功能,老版本指令碼路由規則配置方式請參見開篇鏈結。您可以隨時在服務治理...
03 路由原理
二 路由原理 路由 routing 是指路由器從乙個介面上收到資料報,根據資料報的目的位址進行定向並 到另乙個介面的過程。路由 routing 是指分組從源到目的地時,決定端到端路徑的網路範圍的程序。以上是教科書給出的定義,所謂的路由,就是路由器對資料報從源位址到目標位址選擇路徑的過程。s 192....
1062 路由選擇
時間限制 1 s 空間限制 128000 kb 題目等級 鑽石 diamond 題解在網路通訊中,經常需要求最短路徑。但完全用最短路徑傳輸有這樣乙個問題 如果最終在兩個終端節點之間給出的最短路徑只有一條。則在該路徑中的任乙個節點或鏈路出現故障時,訊號傳輸將面臨中斷的危險。因此,對網路路由選擇作了以下...