產生的緣由:網絡不可達問題。安全
網絡超時以後咱們能夠作的只有兩件事,1 中止(回滾,但對於系統來講影響特別大) 2 繼續(另發送到別的服務消費端)網絡
通常咱們採用第二種處理方式,可是要通過網絡,必然會出現消息重複問題。併發
最好的解決方法是:異步
剛好不須要——冪等操做高併發
S * S = S (某個操做無論重複多少次,結果都同樣)。設計
冪等消息去重:日誌
- 保證有個惟一ID標記每一條消息
- 保證消息處理成功與去重表日誌同事出現
代價:去重代價是去重日誌的寫入,數據校驗,多臺機器對去重表的維護。事件
- 如何保證消息發送與Bob帳戶減錢同時成功或同時失敗?
- 消息處理超時的解決?
- 消息處理失敗如何解決?
儘可能保持消息接受者的冪等性擴展
可是對於非冪等的消息消費端:要記錄日誌表,內次執行時進行日誌校驗。配置
小結: