Eventual Consistency-數據一致性
背景
分佈式事務框架
重量級
[1]基於XA協議的兩階段提交2PC方案 存在問題: 協議通信帶來的高延遲、時間損耗;最終一致性需要使用異步校驗兜底
[2]基於支付寶的TCC方案
[3]基於ebay的消息隊列異步去報方案
輕量級
[1]冪等/重試 恢復不一致數據
[2]狀態機
[3]恢復日誌
[4]異步校驗
評價標準
[1]消息可靠性
[2]業務侵入
CAP理論 任何聯網共享數據系統只能同時滿足2個屬性。
[1]一致性 Consistency 每次讀取都會收到最新寫入、或者錯誤 【可選項】
[2]可用性 Avaliability 每個請求都會受到一個不是錯誤的響應 【可選項】
[3]分區容忍性 Partition Tolerance 節點之間的網絡丟棄、延遲任意數量的消息,系統仍可繼續運行 【必選項】
Base原則 AP、CP
[1]Basically Available 基本可用
[2]Soft State 軟狀態
[3]Eventual consistency 最終一致性
重試
同步重試
[1]同步等待,佔用系統線程資源
[2]流量放大,可能導致系統雪崩
異步重試
[1]時間間隔 隨其重試次數指數增長
[2]重試閾值 超過之後,報警通知
可用性保障
[0]服務可用性 98%
[1]一次重試 99.96% 3個9
[2]兩次重試 99.9992% 5個9
冪等
定義 相同操作執行多次,同執行一次,產生效果一樣。
分類
[1]天然冪等 查詢、刪除
[2]人爲冪等 TCP超時重傳
實現方案
[1]基於記錄的悲觀鎖
[2]基於記錄版本號、狀態機的樂觀鎖
[3]基於數據庫唯一索引的去重表
[4]基於全局唯一標識token
狀態機
恢復日誌
異步校驗
重試
微服務系統
同步調用 TCC 分佈式事務
異步調用 MQ 可靠消息最終一致性方案
可靠消息最終一致性方案
解決角度
[1]可靠消息
[2]最終一致性
核心流程
一、上游服務投遞消息
Step1
Step2
Step3
Steo4
二、下游服務接收消息
三、100%可靠投遞消息—上游服務
四、100%可靠接收消息—下游服務
五、RocketMQ實現方案