Dubbo學習三:Dubbo的高可用(服務容錯,服務治理)

1)集羣容錯
 
1.1:服務路由:
服務路由包含一條路由規則,路由規則決定了服務消費者的調用目標,即規定了服務消 費者可調用哪些服務提供者,du'b'bo提供三種服務路由實現,分別爲
  • 條件路由ConditionRouter
  • 腳本路由ScriptRouter
  • 標籤路由TagRouter
本課程重點分析條件路由ConditionRouter
條件路由規則的格式:
[服務消費者匹配條件] => [服務提供者匹配條件]
   host = 10.20.153.10 => host = 10.20.153.11

該條規則表示 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 廣播調用所有提供者,逐個調用,任意一臺報錯則報錯。 通常用於通知

所有提供者更新緩存或日誌等本地資源信息
 
1.2負載均衡
Dubbo在負載均衡時,提供了多種均衡策略,默認爲random隨機調用
 
  1. Random LoadBalance:按照權重設置隨機概率,無狀態
  2. RoundRobin LoadBalance:輪詢,有狀態
  3. LeastActive LoadBalance:最少活躍數隨機,方法維度的統計服務調用數
  4. ConsistentHash LoadBalance:一致性Hash(相同的請求,統一發送到一臺服務器上進行處理)
2)服務治理
2.1:服務降級:
原因:在使用dubbo進行服務調用時,由於各種原因(服務器宕機/網絡超時/併發次數太多)調用中出現RpcException,調用失敗
處理:服務降級是指由於非業務異常導致的服務不可用,可以返回默認值,避免異常影響主業務的處理。
Dubbo服務降級配置
 
 
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章