分布式篇-G 分布式冪等架構(gòu)設(shè)計(jì)
作者:田超凡
1 冪等的基本概念
答:冪等指的是同一塊業(yè)務(wù)邏輯重復(fù)多次執(zhí)行時(shí),只能令其生效一次,防止重復(fù)執(zhí)行。
2 冪等的發(fā)生場(chǎng)景
答:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-561420.html
- RPC調(diào)用接口的冪等性問(wèn)題
- MQ消費(fèi)者防止重復(fù)消費(fèi)的冪等性問(wèn)題
- 定時(shí)任務(wù)防止重復(fù)執(zhí)行的冪等性問(wèn)題
3 RPC調(diào)用接口的冪等性問(wèn)題產(chǎn)生背景
答:客戶端向服務(wù)器端發(fā)送請(qǐng)求,服務(wù)器端一直不返回響應(yīng)給客戶端??蛻舳嗽O(shè)置一個(gè)超時(shí)時(shí)間,當(dāng)服務(wù)器端超過(guò)規(guī)定的時(shí)間還不返回響應(yīng)給客戶端時(shí),就認(rèn)為其已經(jīng)超時(shí)。
服務(wù)器端超時(shí),客戶端會(huì)重試發(fā)送請(qǐng)求到服務(wù)器端,從而導(dǎo)致同一個(gè)接口可能被多次RPC調(diào)用的問(wèn)題。
4 RPC調(diào)用接口的冪等性問(wèn)題解決方案
答:分三種情況討論:
- INSERT類(lèi)型:將全局id作為主鍵插入到數(shù)據(jù)庫(kù)表中,防止重復(fù)插入
- UPDATE類(lèi)型:基于CAS樂(lè)觀鎖+版本號(hào)Version控制
- DELETE類(lèi)型:大多數(shù)都不是物理刪除,而是邏輯刪除。邏輯刪除本質(zhì)還是UPDATE修改狀態(tài),所以也可以采用CAS樂(lè)觀鎖+版本號(hào)Version控制。
5 MQ消費(fèi)者防止重復(fù)消費(fèi)的冪等性問(wèn)題解決方案
答:消息內(nèi)容中新增一個(gè)全局消息id
MQ消費(fèi)者接收到消息后,獲取全局消息id,到數(shù)據(jù)庫(kù)中查詢
如果不存在,說(shuō)明該消息沒(méi)有被消費(fèi)過(guò),正常消費(fèi)
如果已存在,說(shuō)明該消息已經(jīng)被消費(fèi)過(guò),不再重復(fù)消費(fèi),直接丟棄該消息。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-561420.html
6 定時(shí)任務(wù)防止重復(fù)執(zhí)行的冪等性問(wèn)題解決方案
答:
- 徹底解耦。將定時(shí)任務(wù)邏輯和業(yè)務(wù)邏輯實(shí)現(xiàn)徹底解耦分開(kāi),只對(duì)業(yè)務(wù)邏輯實(shí)現(xiàn)服務(wù)集群,不對(duì)定時(shí)任務(wù)邏輯實(shí)現(xiàn)服務(wù)集群(定時(shí)任務(wù)服務(wù)單機(jī))
- 配置文件新增開(kāi)關(guān)。服務(wù)啟動(dòng)時(shí)先讀取該開(kāi)關(guān)配置,如果配置了開(kāi)啟,則加載定時(shí)任務(wù)類(lèi)、執(zhí)行定時(shí)任務(wù)。如果配置了關(guān)閉,則不加載定時(shí)任務(wù)類(lèi)、不執(zhí)行定時(shí)任務(wù)。
- 數(shù)據(jù)庫(kù)主鍵唯一性。多個(gè)服務(wù)同時(shí)插入相同主鍵id到同一個(gè)數(shù)據(jù)庫(kù)表中,因?yàn)閿?shù)據(jù)庫(kù)表中的主鍵是由唯一約束的,所以只有一個(gè)服務(wù)能插入成功,誰(shuí)插入成功誰(shuí)就可以執(zhí)行定時(shí)任務(wù)。
- 分布式鎖。每個(gè)服務(wù)本質(zhì)都是一個(gè)JVM,可以基于分布式鎖機(jī)制實(shí)現(xiàn):多個(gè)服務(wù)JVM同時(shí)獲取分布式鎖,同一時(shí)刻只有一個(gè)JVM能獲取到分布式鎖,誰(shuí)獲取到分布式鎖,誰(shuí)就可以執(zhí)行定時(shí)任務(wù)。分布式鎖的主流實(shí)現(xiàn)方案有兩種:基于zookeeper實(shí)現(xiàn)分布式鎖和基于redis實(shí)現(xiàn)分布式鎖,可以根據(jù)實(shí)際業(yè)務(wù)場(chǎng)景的需要選擇合適的實(shí)現(xiàn)方案。
- 分布式任務(wù)調(diào)度平臺(tái)。同時(shí)解決定時(shí)任務(wù)高可用和冪等性問(wèn)題。
到了這里,關(guān)于云事業(yè)群CTO線技術(shù)晉升考核機(jī)試題-分布式專(zhuān)題-G 分布式冪等架構(gòu)設(shè)計(jì)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!