一致性hash算法原理
集群容錯
在分布式網絡通信中,容錯能力是必須要具備的,什么叫容錯呢??從字面意思來看:容:是容忍,?錯:是錯誤。?就是容忍錯誤的能力。
我們知道網絡通信會有很多不確定因素,比如網絡延遲、網絡中斷、服務異常等,會造成當前這次請求出現失敗。?當服務通信出現這個問題時,需要采取一定的措施應對。而dubbo中提供了容錯機制來優雅處理這種錯誤
在集群調用失敗時,Dubbo提供了多種容錯方案,缺省為failover重試。
@Service(loadbalance = "random", cluster = "failsafe")Failover Cluster?
失敗自動切換,當出現失敗,重試其它服務器。(缺省)?
通常用于讀操作,但重試會帶來更長延遲。
可通過?retries="2"?來設置重試次數(不含第一次)。
Failfast Cluster
快速失敗,只發起一次調用,失敗立即報錯。
通常用于非冪等性的寫操作,比如新增記錄。
Failsafe Cluster
失敗安全,出現異常時,直接忽略。
通常用于寫入審計日志等操作。
Failback Cluster
失敗自動恢復,后臺記錄失敗請求,定時重發。
通常用于消息通知操作。
Forking Cluster
并行調用多個服務器,只要一個成功即返回。
通常用于實時性要求較高的讀操作,但需要浪費更多服務資源。
可通過?forks="2"?來設置最大并行數。
Broadcast Cluster
廣播調用所有提供者,逐個調用,任意一臺報錯則報錯。(2.1.0開始支持)?
通常用于通知所有提供者更新緩存或日志等本地資源信息。
在實際應用中?查詢語句容錯策略建議使用默認Failover Cluster?,而增刪改?建議使用?Failfast Cluster?或者?使用?Failover Cluster(retries=”0”)?策略?防止出現數據?重復添加等等其它問題!建議在設計接口時候把查詢接口方法單獨做一個接口提供查詢。
?
總結
以上是生活随笔為你收集整理的一致性hash算法原理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Dubbo负载均衡算法
- 下一篇: 服务降级-降级的概念