最終一致性落地實踐--獲取接收方的帳號餘額

壹頁書發表於2016-06-14
接前文
http://blog.itpub.net/29254281/viewspace-2113781/

作為直播型別的應用.
採用最終一致性處理使用者傳送禮物和接收禮物.
傳送禮物是同步的,接收禮物是非同步的.
那麼如何得知主播(收禮者)的真實帳號金額呢
因為總有一部分主播的銀子,尚在處理之中,沒有增加到主播的帳號裡面.

其實用Redis也可以解決這個問題.
傳送方事務完成之後,更新redis,把本次事務資訊寫入redis


接收方非同步處理.
等接收方主要流程結束,事務提交之前,操作Redis
刪除之前傳送方處理流程記錄的Entry.
將傳送方餘額寫入固定的key
這兩步Redis操作可以合成一個Redis事務.


獲取主播的真實帳號餘額,HGetALL,應用程式慢慢算好了.

異常流程
1.傳送方更新Redis失敗.(該事務TranslogID的entry沒有寫入成功)
由於最終一致性,待接收方處理的時候,餘額最終也會加上

2.接收方更新Redis失敗.
待下次收禮 或者 Redis key超時.

更新主播帳號餘額,因為有資料庫鎖保護.所以沒有併發問題.
每次開播之前,都將主播的這個資訊初始化.超時時間5分鐘.



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29254281/viewspace-2119986/,如需轉載,請註明出處,否則將追究法律責任。

相關文章