轉載請注明出處:http://blog.csdn.net/l1028386804/article/details/72354649
叢集的目的:實作高可用,容錯功能,叢集的伺服器不要放在一台實體機,要分散節點,才能實作高可用,高容錯性能,一台提供者挂了,還有其他提供者,保證系統正常、穩定運作。
一、環境準備
edu-provider-01(192.168.1.121)
edu-provider-02(192.168.1.122)
二、dubbo服務叢集
使用者服務:pay-service-user
交易服務:pay-service-trade
我在121,122伺服器同時啟動這兩個服務
在dubboadmin管理控制台中可以檢視到兩台機器的服務都注冊成功
這裡我可以查詢交易資訊
我先關掉121的交易服務
這裡我依舊可以查詢交易資訊
我再關掉122的交易服務
這裡我查詢交易資訊就會出現異常
我在121服務上再開啟交易服務,又可以查詢交易資訊了
三、dubbo服務容錯配置-叢集容錯模式
标簽:
<dubbo:service>提供方配置标簽,粒度粗
<dubbo:service>:服務釋出标簽,例,在這個上配置容錯,粒度細
在這個上配置容錯,粒度細
屬性:cluster 類型:string
是否必填:可選 預設值:failover
作用:性能調優 叢集方式:可選:failover/failfast/failsafe/failback/forking
1、failover cluster
失敗自動切換,當出現失敗,重試其它伺服器。(預設) 通常用于讀操作,但重試會帶來更長延遲。 可通過retries="2"來設定重試次數(不含第一次)。
2、failfast cluster
快速失敗,隻發起一次調用,失敗立即報錯。 通常用于非幂等性的寫操作,比如新增記錄。
3.failsafe cluster
失敗安全,出現異常時,直接忽略,通常 用于寫入審計日志等操作
4.failback cluster
失敗自動恢複,背景記錄失敗請求,定時重發,通常用于消息通知操作。
5.forking cluster
并行調用多個服務,隻要一個成功即傳回,通常用于實時要求較高的讀操作,但需要浪費更多的伺服器資源。可通過forks="2"來設定最大并發數。
在實際項目中,生産環境中,我們用failover模式時可以這樣設計服務接口,遵循接口隔離原則 ,查詢服務與寫操作服務隔離,
查詢接口我們可以配置retries="2"
在寫操作接口我們配置retries="0" ,如果不設定為0, 逾時,會重新連接配接,會出現重複寫的情況,是以使用failover模式時,我們要進行讀寫操作接口隔離,且寫操作接口retries=0