(六)路由規則

2021-07-31 16:52:42 字數 1403 閱讀 9164

路由規則

路由功能,就是 消費者 -> 提供者

即是根據配置的路由規則,找到提供者,

比如,讀寫分離 路由規則:

讀路由:

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 題解在網路通訊中,經常需要求最短路徑。但完全用最短路徑傳輸有這樣乙個問題 如果最終在兩個終端節點之間給出的最短路徑只有一條。則在該路徑中的任乙個節點或鏈路出現故障時,訊號傳輸將面臨中斷的危險。因此,對網路路由選擇作了以下...