nosql简答什么是最终一致性_可靠消息最终一致性方案中预发送作用是什么
可靠消息最終一致性方案的核心流程
①上游服務(wù)投遞消息
如果要實(shí)現(xiàn)可靠消息最終一致性方案,一般你可以自己寫(xiě)一個(gè)可靠消息服務(wù),實(shí)現(xiàn)一些業(yè)務(wù)邏輯。
首先,上游服務(wù)需要發(fā)送一條消息給可靠消息服務(wù)。這條消息說(shuō)白了,你可以認(rèn)為是對(duì)下游服務(wù)一個(gè)接口的調(diào)用,里面包含了對(duì)應(yīng)的一些請(qǐng)求參數(shù)。
然后,可靠消息服務(wù)就得把這條消息存儲(chǔ)到自己的數(shù)據(jù)庫(kù)里去,狀態(tài)為“待確認(rèn)”。
接著,上游服務(wù)就可以執(zhí)行自己本地的數(shù)據(jù)庫(kù)操作,根據(jù)自己的執(zhí)行結(jié)果,再次調(diào)用可靠消息服務(wù)的接口。
如果本地?cái)?shù)據(jù)庫(kù)操作執(zhí)行成功了,那么就找可靠消息服務(wù)確認(rèn)那條消息。如果本地?cái)?shù)據(jù)庫(kù)操作失敗了,那么就找可靠消息服務(wù)刪除那條消息。
此時(shí)如果是確認(rèn)消息,那么可靠消息服務(wù)就把數(shù)據(jù)庫(kù)里的消息狀態(tài)更新為“已發(fā)送”,同時(shí)將消息發(fā)送給 MQ。
這里有一個(gè)很關(guān)鍵的點(diǎn),就是更新數(shù)據(jù)庫(kù)里的消息狀態(tài)和投遞消息到 MQ。這倆操作,你得放在一個(gè)方法里,而且得開(kāi)啟本地事務(wù)。
啥意思呢?如果數(shù)據(jù)庫(kù)里更新消息的狀態(tài)失敗了,那么就拋異常退出了,就別投遞到 MQ;如果投遞 MQ 失敗報(bào)錯(cuò)了,那么就要拋異常讓本地?cái)?shù)據(jù)庫(kù)事務(wù)回滾。這倆操作必須得一起成功,或者一起失敗。
如果上游服務(wù)是通知?jiǎng)h除消息,那么可靠消息服務(wù)就得刪除這條消息。
====================================================================
可靠消息服務(wù)是什么?MQ是消息隊(duì)列么?她兩的區(qū)別是什么?
總結(jié)
以上是生活随笔為你收集整理的nosql简答什么是最终一致性_可靠消息最终一致性方案中预发送作用是什么的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 滑动解锁
- 下一篇: 删除a标签下面的横线