99re热视频这里只精品,久久久天堂国产精品女人,国产av一区二区三区,久久久精品成人免费看片,99久久精品免费看国产一区二区三区

Dubbo3 集群容錯

2022-04-01 17:04 更新

集群調(diào)用失敗時,Dubbo 提供的容錯方案

在集群調(diào)用失敗時,Dubbo 提供了多種容錯方案,缺省為 failover 重試。

cluster

各節(jié)點關系:

  • 這里的 ?Invoker ?是 ?Provider ?的一個可調(diào)用 ?Service ?的抽象,?Invoker ?封裝了 ?Provider ?地址及 ?Service ?接口信息
  • ?Directory ?代表多個 ?Invoker?,可以把它看成 ?List<Invoker>? ,但與 ?List ?不同的是,它的值可能是動態(tài)變化的,比如注冊中心推送變更
  • ?Cluster ?將 ?Directory ?中的多個 ?Invoker ?偽裝成一個 ?Invoker?,對上層透明,偽裝過程包含了容錯邏輯,調(diào)用失敗后,重試另一個
  • ?Router ?負責從多個 ?Invoker ?中按路由規(guī)則選出子集,比如讀寫分離,應用隔離等
  • ?LoadBalance ?負責從多個 ?Invoker ?中選出具體的一個用于本次調(diào)用,選的過程包含了負載均衡算法,調(diào)用失敗后,需要重選

集群容錯模式

可以自行擴展集群容錯策略,參見:集群擴展

Failover Cluster

失敗自動切換,當出現(xiàn)失敗,重試其它服務器。通常用于讀操作,但重試會帶來更長延遲。可通過? retries="2" ?來設置重試次數(shù)(不含第一次)。

重試次數(shù)配置如下:

<dubbo:service retries="2" />

<dubbo:reference retries="2" />

<dubbo:reference>
    <dubbo:method name="findFoo" retries="2" />
</dubbo:reference>
提示
該配置為缺省配置

Failfast Cluster

快速失敗,只發(fā)起一次調(diào)用,失敗立即報錯。通常用于非冪等性的寫操作,比如新增記錄。

Failsafe Cluster

失敗安全,出現(xiàn)異常時,直接忽略。通常用于寫入審計日志等操作。

Failback Cluster

失敗自動恢復,后臺記錄失敗請求,定時重發(fā)。通常用于消息通知操作。

Forking Cluster

并行調(diào)用多個服務器,只要一個成功即返回。通常用于實時性要求較高的讀操作,但需要浪費更多服務資源??赏ㄟ^ ?forks="2" ?來設置最大并行數(shù)。

Broadcast Cluster

廣播調(diào)用所有提供者,逐個調(diào)用,任意一臺報錯則報錯。通常用于通知所有提供者更新緩存或日志等本地資源信息。

現(xiàn)在廣播調(diào)用中,可以通過 broadcast.fail.percent 配置節(jié)點調(diào)用失敗的比例,當達到這個比例后,BroadcastClusterInvoker 將不再調(diào)用其他節(jié)點,直接拋出異常。 broadcast.fail.percent 取值在 0~100 范圍內(nèi)。默認情況下當全部調(diào)用失敗后,才會拋出異常。 broadcast.fail.percent 只是控制的當失敗后是否繼續(xù)調(diào)用其他節(jié)點,并不改變結果(任意一臺報錯則報錯)。broadcast.fail.percent 參數(shù) 在 dubbo2.7.10 及以上版本生效。

Broadcast Cluster 配置 broadcast.fail.percent。

broadcast.fail.percent=20 代表了當 20% 的節(jié)點調(diào)用失敗就拋出異常,不再調(diào)用其他節(jié)點。

@reference(cluster = "broadcast", parameters = {"broadcast.fail.percent", "20"})
提示
?2.1.0?開始支持

Available Cluster

調(diào)用目前可用的實例(只調(diào)用一個),如果當前沒有可用的實例,則拋出異常。通常用于不需要負載均衡的場景。

Mergeable Cluster

將集群中的調(diào)用結果聚合起來返回結果,通常和group一起配合使用。通過分組對結果進行聚合并返回聚合后的結果,比如菜單服務,用group區(qū)分同一接口的多種實現(xiàn),現(xiàn)在消費方需從每種group中調(diào)用一次并返回結果,對結果進行合并之后返回,這樣就可以實現(xiàn)聚合菜單項。

ZoneAware Cluster

多注冊中心訂閱的場景,注冊中心集群間的負載均衡。對于多注冊中心間的選址策略有如下四種

  1. 指定優(yōu)先級:?preferred="true"?注冊中心的地址將被優(yōu)先選擇
    <dubbo:registry address="zookeeper://127.0.0.1:2181" preferred="true" />
  2. 同中心優(yōu)先:檢查當前請求所屬的區(qū)域,優(yōu)先選擇具有相同區(qū)域的注冊中心
    <dubbo:registry address="zookeeper://127.0.0.1:2181" zone="beijing" />
  3. 權重輪詢:根據(jù)每個注冊中心的權重分配流量
    <dubbo:registry id="beijing" address="zookeeper://127.0.0.1:2181" weight="100" />
    
    <dubbo:registry id="shanghai" address="zookeeper://127.0.0.1:2182" weight="10" />
  4. 缺省值:選擇一個可用的注冊中心

集群模式配置

按照以下示例在服務提供方和消費方配置集群模式

<dubbo:service cluster="failsafe" />

<dubbo:reference cluster="failsafe" />


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號