一.容錯(cuò)方式
服務(wù)調(diào)用總會(huì)出現(xiàn),服務(wù)不可用的問(wèn)題,需要短時(shí)間內(nèi)去重試卫漫,還是要直接中斷在不通的場(chǎng)景下選擇。
1.非冪等性操作
每一次操作都對(duì)數(shù)據(jù)產(chǎn)生不同的影響肾砂。比支付功能列赎,不允許重復(fù)提交。
Failfast Cluster
快速失敗镐确,只發(fā)起一次調(diào)用包吝,失敗立即報(bào)錯(cuò)。通常用于非冪等性的寫(xiě)操作辫塌,比如新增記錄漏策。
2.不重要操作,一次失敗保留日志
失敗就失敗了臼氨,不重要掺喻,比如日志服務(wù),忽略就好储矩。
Failsafe Cluster
失敗安全感耙,出現(xiàn)異常時(shí),直接忽略持隧。通常用于寫(xiě)入審計(jì)日志等操作即硼。
3.需要實(shí)時(shí)性很高的操作
比如刷票,需要并發(fā)發(fā)送請(qǐng)求屡拨,誰(shuí)先回來(lái)用誰(shuí)的只酥。
Forking Cluster
并行調(diào)用多個(gè)服務(wù)器,只要一個(gè)成功即返回呀狼。通常用于實(shí)時(shí)性要求較高的讀操作裂允,但需要浪費(fèi)更多服務(wù)資源「缤В可通過(guò) forks="2" 來(lái)設(shè)置最大并行數(shù)绝编。
4.通知類(lèi)消息
不著急,但是要保證發(fā)送到,所以保存日志,然后定時(shí)發(fā)送十饥。
Failback Cluster
失敗自動(dòng)恢復(fù)窟勃,后臺(tái)記錄失敗請(qǐng)求,定時(shí)重發(fā)逗堵。通常用于消息通知操作秉氧。
5.廣播類(lèi)的通知
配置更新,逐一通知每臺(tái)機(jī)器
Broadcast Cluster
廣播調(diào)用所有提供者砸捏,逐個(gè)調(diào)用谬运,任意一臺(tái)報(bào)錯(cuò)則報(bào)錯(cuò) .通常用于通知所有提供者更新緩存或日志等本地資源信息。
6.普通讀操作(重試)
### Failover Cluster
失敗自動(dòng)切換垦藏,當(dāng)出現(xiàn)失敗,重試其它服務(wù)器伞访。通常用于讀操作掂骏,但重試會(huì)帶來(lái)更長(zhǎng)延遲『裰溃可通過(guò) `retries="2"` 來(lái)設(shè)置重試次數(shù)(不含第一次)弟灼。
二、配置方式
1.Failover
<dubbo:service retries="2" />
2.Failsafe
<dubbo:service cluster="failsafe" />
其他類(lèi)似