1、什麼叫Dubbo服務集羣spring
指把同一個服務部署到多臺機器,而後經過Dubbo服務集羣的容錯配置實現一臺機器的服務掛掉以後自動切換到另外的一臺機器編程
2、Dubbo服務集羣容錯配置——集羣容錯模式安全
標籤:<dubbo:service>、<dubbo:reference>、<dubbo:consumer>、<dubbo:provider>服務器
屬性:clusteride
類型:string性能
是否必填:可選測試
缺省值:failoverspa
做用:性能調優日誌
集羣方式:可選:failover/failfast/failsafe/failback/forkingcode
兼容性:2.0.5以上版本
一、Failover Cluster(dubbo缺省配置)
失敗自動切換,當出現失敗,重試其它服務器(缺省)。一般用於讀操做,但重試會帶來更長延遲。可經過retries="2"來設置重試次數(不含第一次),retries的值是根據你的服務部署了多少臺機器來設置的,好比你的同一個服務在三臺機器上都部署了,那麼retries的值就設置爲2.
1.1 能夠在服務提供方配置,不配置時也是默認的以下配置
<dubbo:service cluster="failover" retries="2" />
1.2 能夠在服務消費方配置,不配置時也是默認的以下配置
<dubbo:reference cluster="failover" retries="2" />
1.3 能夠在消費方指定調用某個方法失敗時的重試調用次數
<dubbo:reference>
<dubbo:method name="findFoo" retries="2" />
</dubbo:reference>
二、Failfast Cluster
快速失敗,只發起一次調用,失敗當即報錯。一般用於非冪等性的寫操做,好比新增記錄。
2.1 能夠在服務提供方配置
<dubbo:service cluster="failfast" />
2.2 能夠在服務消費方配置
<dubbo:reference cluster="failfast" />
三、Failsafe Cluster
失敗安全,出現異常時,直接忽略。一般用於寫入審計日誌等操做。
3.1 能夠在服務提供方配置
<dubbo:service cluster=""failsafe"" />
3.2 能夠在服務消費方配置
<dubbo:reference cluster=""failsafe"" />
四、Failback Cluster
失敗自動恢復,後臺記錄失敗請求,定時重發。一般用於消息通知操做。
4.1 能夠在服務提供方配置
<dubbo:service cluster="failback" />
4.2 能夠在服務消費方配置
<dubbo:reference cluster="failback" />
五、Forking Cluster
並行調用多個服務器,只要一個成功即返回。一般用於實時性要求較高的讀操做,但須要浪費更多服務資源。可經過forks="2"來設置最大並行數。
5.1 能夠在服務提供方配置
<dubbo:service cluster="forking" />
5.2 能夠在服務消費方配置
<dubbo:reference cluster="forking" />
3、集羣容錯配置的選擇
通常狀況下failover(讀操做)和failfast(寫操做)就能夠知足需求;failover集羣容錯的retries的屬性值改成"0"時等價於failfast
4、服務啓動依賴檢查
1. 啓動依賴檢查的做用
Dubbo 缺省會在啓動時檢查依賴的服務是否可用,不可用時會拋出異常,阻止 Spring 初始化完成,以便上線時,能及早發現問題,默認 check="true"
。
2. 能夠經過 check="false"
關閉檢查,那麼何時不須要啓動依賴檢查呢
2.1 測試時,有些服務不關心,或者出現了循環依賴,必須有一方先啓動。
2.2 若是你的 Spring 容器是懶加載的,或者經過 API 編程延遲引用服務,請關閉 check,不然服務臨時不可用時,會拋出異常,拿到 null 引用,若是 check="false"
,老是會返回引用,當服務恢復時,能自動連上。
3. 經過 spring 配置依賴檢查
3.1 關閉某個服務的啓動時檢查 (沒有提供者時報錯):
<dubbo:reference interface="com.foo.BarService" check="false" />
3.2 關閉全部服務的啓動時檢查 (沒有提供者時報錯):
<dubbo:consumer check="false" />
3.3 關閉註冊中心啓動時檢查 (註冊訂閱失敗時報錯,通常不關閉):
<dubbo:registry check="false" />
4. 經過 dubbo.properties
dubbo.reference.com.foo.BarService.check=false
dubbo.reference.check=false
dubbo.consumer.check=false
dubbo.registry.check=false
說明:
dubbo.reference.check=false
,強制改變全部 reference 的 check 值,就算配置中有聲明,也會被覆蓋。
dubbo.consumer.check=false
,是設置 check 的缺省值,若是配置中有顯式的聲明,如:<dubbo:reference check="true"/>
,不會受影響。
dubbo.registry.check=false
,前面兩個都是指訂閱成功,但提供者列表是否爲空是否報錯,若是註冊訂閱失敗時,也容許啓動,需使用此選項,將在後臺定時重試。