Dubbo的集羣容錯模式

在集羣調用失敗時,Dubbo 提供了多種容錯方案,缺省爲 failover 重試。
cluster
各節點關係:算法

  • 這裏的InvokerProvider的一個可調用Service的抽象,Invoker封裝了Provider地址及Service接口信息
  • Directory表明多個Invoker,能夠把它當作List<Invoker>,但與List不一樣的是,它的值多是動態變化的,好比註冊中心推送變動
  • ClusterDirectory中的多個Invoker假裝成一個Invoker,對上層透明,假裝過程包含了容錯邏輯,調用失敗後,重試另外一個
  • Router負責從多個Invoker中按路由規則選出子集,好比讀寫分離,應用隔離等
  • LoadBalance負責從多個Invoker中選出具體的一個用於本次調用,選的過程包含了負載均衡算法,調用失敗後,須要重選

  • Failover Cluster

失敗自動切換,當出現失敗,自動切換其餘服務器。一般用於讀操做,但重試會帶來更長延遲。可經過 retries="2" 來設置重試次數(不含第一次)。緩存

  • Failfast Cluster

快速失敗,只發起一次調用,失敗當即報錯。一般用於非冪等性的寫操做,好比新增記錄。安全

  • Failsafe Cluster

失敗安全,出現異常時,直接忽略。一般用於寫入審計日誌等操做。服務器

  • Failback Cluster

失敗自動恢復,後臺記錄失敗請求,定時重發。一般用於消息通知操做。負載均衡

  • Forking Cluster

並行調用多個服務器,只要一個成功即返回。一般用於實時性要求較高的讀操做,但須要浪費更多服務資源。可經過forks="2"來設置最大並行數。ide

  • Broadcast Cluster

廣播調用全部提供者,逐個調用,任意一臺報錯則報錯。一般用於通知全部提供者更新緩存或日誌等本地資源信息。spa

相關文章
相關標籤/搜索