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