分布式事務(五)之最大努力通知

2022-09-10 00:18:30 字數 1250 閱讀 3611

最大努力通知型( best-effort delivery)是最簡單的一種柔性事務,適用於一些最終一致性時間敏感度低的業務,且被動方處理結果不影響主動方的處理結果。典型的使用場景:如銀行通知、商戶通知等。

最大努力通知型( best-effort delivery)是最簡單的一種柔性事務,適用於一些最終一致性時間敏感度低的業務,且被動方處理結果 不影響主動方的處理結果。典型的使用場景:如銀行通知、商戶通知等。最大努力通知型的實現方案,一般符合以下特點:

不可靠訊息:業務活動主動方,在完成業務處理之後,向業務活動的被動方傳送訊息,直到通知n次後不再通知,允許訊息丟失(不可靠訊息)。

定期校對:業務活動的被動方,根據定時策略,向業務活動主動方查詢(主動方提供查詢介面),恢復丟失的業務訊息。

舉例來說:筆者曾經做過乙個簡訊傳送平台,背景是公司內部有多個業務都有傳送簡訊的需求,如果每個業務獨立實現簡訊傳送功能,存在功能實現上的重複。因此專門做了乙個簡訊平台專案,所有的業務方都接入這個簡訊平台,來實現傳送簡訊的功能。簡化後的架構如下所示:

業務方傳送一次簡訊的流程包含如下步驟:

業務方將簡訊傳送請求提交給簡訊平台;

簡訊平台接收到要傳送的簡訊,記錄到資料庫中,並標記其狀態為」已接收";

簡訊平台呼叫外部簡訊傳送**商的介面,傳送簡訊。外部**商的介面也是非同步將簡訊傳送到使用者手機上,因此這個介面呼叫後,立即返回,進入第4步;

更新簡訊傳送狀態為"已傳送";

簡訊傳送**商非同步通知簡訊平台簡訊傳送結果。而通知可能失敗,因此最多隻會通知n次。;

簡訊平台接收到簡訊傳送結果後,更新簡訊傳送狀態,可能是成功,也可能失敗(如手機欠費)。到底是成功還是失敗並不重要,重要的是我們知道了這調簡訊傳送的最終結果;

如果最多隻通知n次,如果都失敗了的話,那麼簡訊平台將不知道簡訊到底有沒有成功傳送。因此簡訊傳送**商需要提供乙個查詢介面,以方便簡訊平台驅動的去查詢,進行定期校對。

在這個案例中,簡訊傳送**商通知簡訊平台簡訊傳送結果的過程中,就是最典型的最大努力通知型方案,通知了n次就不再通知。通過提供乙個簡訊結果查詢介面,讓簡訊平台可以進行定期的校對。而由於簡訊傳送業務的時間敏感度並不高,比較適合採用這個方案。

需要注意的是,簡訊結果查詢介面很重要,必須要進行定期校對。因為後期要進行對賬,筆者在做這個專案的時候,乙個月的簡訊傳送總量在高峰期可以達到1億條左右,即使一條簡訊只要5分錢,乙個月就有500w。

柔性事務:最大努力通知

分布式事務 解決方案之最大努力通知理論

常見的分布式事務四大解決方案 2pc tcc 可靠訊息最終一致性 最大努力通知。前三種解決方案我們都分別從理論和實戰兩個維度做了講解。今天我們來說說最大努力通知這個解決方案的理論部分。先來看看下面這個充值的例子 互動流程如下 1 賬戶系統呼叫充值系統介面發起支付請求。2 充值系統完成支付處理向賬戶系...

分布式事物學習之最大努力通知型(八)

實現業務活動的主動方,在完成業務處理之後向業務活動方傳送訊息,允許訊息丟失 業務活動的被動方根據定時策略,向業務活動方查詢結果,恢復丟失的業務 約束被動方的處理結果不影響主動方的處理結果 成本 業務查詢與校對的系統的成本 業務方的執行結果要提供可查詢介面 適用範圍 對業務最終一致性的時間敏感度低 跨...

分布式事務解決方案之四 最大努力通知

自學筆記 6.1.什麼是最大努力通知 最大努力通知也是一種解決分布式事務的方案,下邊是乙個是充值的例子 互動流程 1 賬戶系統呼叫充值系統介面 2 充值系統完成支付處理向賬戶系統發起充值結果通知 若通知失敗,則充值系統按策略進行重複通知 3 賬戶系統接收到充值結果通知修改充值狀態。4 賬戶系統未接收...