1. 程式人生 > 實用技巧 >Dubbo學習筆記(二)——高可用

Dubbo學習筆記(二)——高可用

註冊中心宕機

現象:當註冊中心發生宕機,消費者還是能夠消費dubbo暴露的服務。
原因:

  • 監控中心掉線不會影響使用,只是丟失部分取樣資料。
  • 資料庫宕機之後,註冊中心仍能通過快取提供服務列表查詢,但是不能註冊新的服務。
  • 註冊中心對等叢集,任意一臺掉了,還是能夠自動切換到另一臺上。
  • 註冊中心都掛了,服務提供者和消費者還是可以通過本地快取實現通訊。
  • 服務提供者無狀態,任意一臺掉了,還是可以由其他的提供者提供服務。
  • 服務提供者都掛了,那麼消費者就不能使用應用了,並且會無限次地重試等待服務者恢復。

負載均衡機制

負載均衡策略

  1. 基於權重的隨機負載均衡機制
    隨機訪問的時候,訪問概率等於權重比。
  2. 基於權重的輪詢負載均衡機制
    輪詢訪問的時候,訪問概率等於權重比。
  3. 最少活躍數負載均衡機制
    儘可能呼叫相應速度最快的服務提供者。
  4. 一致性雜湊負載均衡機制
    根據消費者的請求資訊,對映到相應的提供者。

服務降級

什麼是服務降級

當伺服器壓力劇增的情況下,根據實際業務情況及流量,對一些服務和頁面有策略的不處理或換種簡單的方式處理,從而釋放伺服器資源以保證核心交易正常運作或高效運作。

可以通過服務降級功能臨時遮蔽某個出錯的非關鍵服務,並定義降級後的返回策略。

服務降級的策略

  • mock = force:return+null 表示消費方對該服務的方法呼叫直接放回null值,不發起遠端呼叫。用來遮蔽 不重要服務不可用時對呼叫方的影響。
  • mock = fail:return + null 表示消費方對該伺服器的方法呼叫在失敗後,再返回null,不拋異常。用來容忍不重要服務不穩定時對呼叫方的影響。

叢集容錯

叢集容錯模式

  1. failover cluster
    失敗自動切換,當出現失敗,重試其它的伺服器。通常用於讀操作,但是重試會帶來延遲,可以通過retries=2,來設定重試次數。這是dubbo預設的叢集模式。
  2. failfast cluster
    快速失敗,發起一次呼叫,失敗了就立即報錯。通常用於非冪等性的寫操作,比如新增記錄。
  3. failsafe cluster
    失敗安全,出現異常的時候,直接忽略。通常用於吸入審計日誌等操作。
  4. failback cluster
    失敗自動恢復,後臺記錄失敗請求,定時重發。通常用於訊息通知操作。
  5. forking cluster
    並行呼叫多個伺服器,只要一個成功即可返回。通常用於實時性要求高的讀操作,但需要浪費更多的資源。可以通過forks= "2",來設定最大並行數。
  6. broadcast cluster
    廣播呼叫所有提供者,逐個呼叫,任意一臺報錯,則報錯。通常用於通知所有服務提供者更新快取或日誌等本地資源資訊。進行同步。

叢集模式配置

可以分別在提供方和消費者配置叢集模式。預設模式是失敗自動切換。

<dubbo:service cluster="failsafe"/>
<dubbo:reference cluster="failsafe"/>

整合hystrix開啟服務容錯功能。