在微服務架構下呢,我們需要將每個服務對應自己的資料庫,這就成了在原來單體架構中所有的服務操作乙個資料庫變成了多個服務操作多個資料庫,遇到有事務約束的場景比如轉賬匯款,訂單狀態和庫存處理,就從本地事務過度到分布式事務上
但我們的分布式事務並不適用於微服務,
出現的問題
1. 倆個階段提交會出現同步阻塞和加鎖,並且有單點故障
2. 由於鎖的原因降低吞吐量
3. 並且我們的nosql資料庫並不支援2pc(倆階段提交)
我們的在微服務架構下的解決方法:
採用最終一致性:指不同服務節點在一段時間後節點間的資料會最終達到一致的狀態
有倆種模式可以完成
第一種模式:
可靠性事件模式:一般借助訊息佇列和內部表來完成
第二種模式:
補償模式-sagas模型
sagas模型是乙個常事務,saga是一系列有序的本地事務,每個本地事務通過更新資料庫或者傳送訊息來促發下乙個本地事務
如果本地事務失敗,saga會有序的執行補償事務,來回滾剛才的操作,它的特點就是支援回滾
資料一致性
資料一致性通常指關聯資料之間的邏輯關係是否正確和完整。而資料儲存的一致性模型則可以認為是儲存系統和資料使用者之間的一種約定。如果使用者遵循這種約定,則可以得到系統所承諾的訪問結果。常用的一致性模型有 a 嚴格一致性 linearizability,strict atomic consistency ...
資料一致性
丟失更新 未確定的相關性 不一致的分析和幻想讀 事務a讀取與搜尋條件相匹配的若干行。事務b以插入或刪除行等方式來修改事務a的結果集,然後再提交。幻讀是指當事務不是獨立執行時發生的一種現象,例如第乙個事務對乙個表中的資料進行了修改,比如這種修改涉及到表中的 全部資料行 同時,第二個事務也修改這個表中的...
資料一致性
資料一致性通常指關聯資料之間的邏輯關係是否正確和完整。而資料儲存的一致性模型則可以認為是儲存系統和資料使用者之間的一種約定。如果使用者遵循這種約定,則可以得到系統所承諾的訪問結果。常用的一致性模型有 a 嚴格一致性 linearizability,strict atomic consistency ...