Dubbo學習筆記(二)——高可用
阿新 • • 發佈:2020-12-30
註冊中心宕機
現象:當註冊中心發生宕機,消費者還是能夠消費dubbo暴露的服務。
原因:
- 監控中心掉線不會影響使用,只是丟失部分取樣資料。
- 資料庫宕機之後,註冊中心仍能通過快取提供服務列表查詢,但是不能註冊新的服務。
- 註冊中心對等叢集,任意一臺掉了,還是能夠自動切換到另一臺上。
- 註冊中心都掛了,服務提供者和消費者還是可以通過本地快取實現通訊。
- 服務提供者無狀態,任意一臺掉了,還是可以由其他的提供者提供服務。
- 服務提供者都掛了,那麼消費者就不能使用應用了,並且會無限次地重試等待服務者恢復。
負載均衡機制
負載均衡策略
- 基於權重的隨機負載均衡機制
隨機訪問的時候,訪問概率等於權重比。 - 基於權重的輪詢負載均衡機制
輪詢訪問的時候,訪問概率等於權重比。 - 最少活躍數負載均衡機制
儘可能呼叫相應速度最快的服務提供者。 - 一致性雜湊負載均衡機制
根據消費者的請求資訊,對映到相應的提供者。
服務降級
什麼是服務降級
當伺服器壓力劇增的情況下,根據實際業務情況及流量,對一些服務和頁面有策略的不處理或換種簡單的方式處理,從而釋放伺服器資源以保證核心交易正常運作或高效運作。
可以通過服務降級功能臨時遮蔽某個出錯的非關鍵服務,並定義降級後的返回策略。
服務降級的策略
- mock = force:return+null 表示消費方對該服務的方法呼叫直接放回null值,不發起遠端呼叫。用來遮蔽 不重要服務不可用時對呼叫方的影響。
- mock = fail:return + null 表示消費方對該伺服器的方法呼叫在失敗後,再返回null,不拋異常。用來容忍不重要服務不穩定時對呼叫方的影響。
叢集容錯
叢集容錯模式
- failover cluster
失敗自動切換,當出現失敗,重試其它的伺服器。通常用於讀操作,但是重試會帶來延遲,可以通過retries=2,來設定重試次數。這是dubbo預設的叢集模式。 - failfast cluster
快速失敗,發起一次呼叫,失敗了就立即報錯。通常用於非冪等性的寫操作,比如新增記錄。 - failsafe cluster
失敗安全,出現異常的時候,直接忽略。通常用於吸入審計日誌等操作。 - failback cluster
失敗自動恢復,後臺記錄失敗請求,定時重發。通常用於訊息通知操作。 - forking cluster
並行呼叫多個伺服器,只要一個成功即可返回。通常用於實時性要求高的讀操作,但需要浪費更多的資源。可以通過forks= "2",來設定最大並行數。 - broadcast cluster
廣播呼叫所有提供者,逐個呼叫,任意一臺報錯,則報錯。通常用於通知所有服務提供者更新快取或日誌等本地資源資訊。進行同步。
叢集模式配置
可以分別在提供方和消費者配置叢集模式。預設模式是失敗自動切換。
<dubbo:service cluster="failsafe"/>
<dubbo:reference cluster="failsafe"/>
整合hystrix開啟服務容錯功能。