- 條件路由ConditionRouter
- 腳本路由ScriptRouter
- 標籤路由TagRouter
該條規則表示 IP 爲 10.20.153.10 的服務消費者只可調用 IP 爲 10.20.153.11 機器上的服務,不可 調用其他機器上的服務。
如果服務消費者匹配條件爲空,表示不對服務消費者進行限制。如果服務提供者匹配條件爲空,表示對某些服務消費者禁用服務
白名單:
host!=10.20.153.10,10.20.153.11=>
解答:上述白名單服務提供者爲空,host爲不等於,表示爲對服務所綁定的ip除了10.20.153.10,10.20.153.11之外的其他進行服務禁用
黑名單
host=10.20.153.10,10.20.153.11=>
解答:上述黑名單服務提供者爲空,host爲等於,表示爲對服務所綁定的ip10.20.153.10,10.20.153.11進行服務禁用
讀寫分離
method=fifind,list,get,is=>host=172.22.3.94,172.22.3.95,172.22.3.96
解答:服務消費方請求:如果是以fifind,list,get,is開頭,主機ip爲以上的服務進行處理
method!=fifind,list,get,is=>host=172.22.3.97,172.22.3.98
解答:服務消費方請求:如果不是以fifind,list,get,is開頭,主機IP爲以上的服務進行處理
前後臺分離
application=front=>host=172.22.3.91,172.22.3.92,172.22.3.93
解答:消費方是前臺,交給以上處理
application!=front=>host=172.22.3.94,172.22.3.95,172.22.3.96
解答:如果不是前臺請求,也就是後臺,交給以上服務進行處理
集羣容錯
正常情況下,不僅需要考慮正常邏輯,也需要考慮異常情況,下面展示dubbo提供的集中容錯機制
1:Failover Cluster 失敗自動切換,當出現失敗,重試其它服務器。(缺省) 通常用於讀操作,但重試會帶來更長延遲。可通過 retries="2" 來設置重試次數(不含第一次)。
重試次數配置如下:
<dubbo:service retries="2" /> 或 <dubbo:reference retries="2" />
2:Failfast Cluster 快速失敗,只發起一次調用,失敗立即報錯。通常用於非冪等性的寫操作, 比如新增記錄。
3:Failsafe Cluster 失敗安全,出現異常時,直接忽略。通常用於寫入日誌等操作。
4:Failback Cluster 失敗自動恢復,後臺記錄失敗請求,定時重發。 通常用於消息通知操作。
5:Forking Cluster 並行調用多個服務器,只要一個成功即返回。通常用於實時性要求較高的讀 操作,但需要浪費更多服務資源。可通過forks="2"來設置最大並行數。
6:Broadcast Cluster 廣播調用所有提供者,逐個調用,任意一臺報錯則報錯。 通常用於通知
- Random LoadBalance:按照權重設置隨機概率,無狀態
- RoundRobin LoadBalance:輪詢,有狀態
- LeastActive LoadBalance:最少活躍數隨機,方法維度的統計服務調用數
- ConsistentHash LoadBalance:一致性Hash(相同的請求,統一發送到一臺服務器上進行處理)