學習Dubbo源碼的過程中,首先看到的是dubbo的集群容錯模式,以下簡單介紹10種集群容錯模式
1.AvailableCluster
顧名思義,就是可用性優先,遍歷所有的invokers,選擇可用的
2.MergeableCluster:當接口需要多個服務組合返回值時,使用該接口
3.ForkingCluster:並行執行,當有一個返回值時,取該值,該方法中使用了線程池和LinkedBlockingQuene來並發所有的子任務,並阻塞父線程,實現很優雅。可用於查詢等要求性能高的,不適用於非冪等的插入刪除等操作
4.FailoverCluster:Dubbo的默認容錯機制,失敗重試,默認次數為2(不包含第一次),會優先選擇未執行過的invoker。
5.RegistryAwareCluster:優先選擇本地的invoker
6.FailsafeCluste:安全失敗,當拋出異常時直接catch掉,只打印日志,一般用於記錄日志等操作
7.FailfastCluster:快速失敗,當失敗后,立刻拋出異常,適用於非接口冪等的寫操作。有類似於AvailableCluster
8.MockClusterWrapper,流程如下:
9.BroadcastCluster:異常自己吃掉,遍歷所有invoker,廣播所有的invoker做一件事。
10.FailbackCluster:失敗自動恢復,后台記錄失敗請求,定時重發。通常用於消息通知操作。
參考大神文章:https://www.jianshu.com/p/e0235110fb74