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