kafka如何保障數(shù)據(jù)庫(kù)最終一致性 如何使用消息隊(duì)列解決分布式事務(wù)?
如何使用消息隊(duì)列解決分布式事務(wù)?有兩個(gè)選擇。方案1本地消息事務(wù)表生產(chǎn)者需要添加一個(gè)事務(wù)消息表,具體步驟可以通過(guò)這種實(shí)現(xiàn):。1.生產(chǎn)者執(zhí)行業(yè)務(wù)邏輯,并在消息表中插入一個(gè)事務(wù)記錄。這兩個(gè)操作在一個(gè)本地事務(wù)
如何使用消息隊(duì)列解決分布式事務(wù)?
有兩個(gè)選擇。
方案1本地消息事務(wù)表
生產(chǎn)者需要添加一個(gè)事務(wù)消息表,具體步驟可以通過(guò)這種實(shí)現(xiàn):。
1.生產(chǎn)者執(zhí)行業(yè)務(wù)邏輯,并在消息表中插入一個(gè)事務(wù)記錄。這兩個(gè)操作在一個(gè)本地事務(wù)中。
2.啟動(dòng)一個(gè)后臺(tái)線程定期輪詢消息表,并將消息發(fā)送到消息隊(duì)列。
3.刪除消息表中的記錄,直到傳輸成功。
第二種方案需要消息隊(duì)列的支持,業(yè)務(wù)方提供查詢接口。
1.生產(chǎn)者將準(zhǔn)備好的消息發(fā)送到消息隊(duì)列。
2.本地事務(wù)中的業(yè)務(wù)邏輯
3.根據(jù)執(zhí)行結(jié)果確認(rèn)或取消準(zhǔn)備好的消息。
4.消息隊(duì)列會(huì)保證預(yù)發(fā)布的消息會(huì)被確認(rèn)或取消,消息隊(duì)列會(huì)不斷向生產(chǎn)者索取執(zhí)行結(jié)果,這就需要生產(chǎn)者提供類似的回調(diào)函數(shù)。
方案2相當(dāng)于方案1中的消息隊(duì)列代替消息表和后臺(tái)線程輪詢功能,但并不是所有的消息隊(duì)列都支持該功能。支持Rock
消息隊(duì)列原理?
消息隊(duì)列主要解決應(yīng)用耦合、異步消息和流量裁剪問(wèn)題。實(shí)現(xiàn)高性能、高可用性、可擴(kuò)展和最終一致的架構(gòu)。廣泛使用的消息隊(duì)列有Kafka、ActiveMQ、RabbitMQ、ZeroMQ、MetaMQ和RocketMQ。
消息隊(duì)列在實(shí)際應(yīng)用中常見(jiàn)的使用場(chǎng)景是異步處理、應(yīng)用解耦、流量裁剪和消息通信。