海量併發下的事物一致性

2021-10-21 12:22:14 字數 510 閱讀 4674

事物:

一系列操作,要麼都執行,要麼都不執行。

事物的一致性:

分布式的情況下,比如下訂單,有訂單系統,商品庫存,支付系統等。

每乙個子系統執行的操作,都是乙個事物。

所有子系統執行的操作,合起來還可以看成乙個事物。

強一致性:

就是同步執行各個事物,所有都正確執行。

最終一致性:

可以通過訊息佇列完成,比如商品和支付先執行,通過訊息佇列發給訂單系統,因為訊息佇列可以資料持久化,

我們認為商品系統的事物一定會正確執行,這樣最終的結果也是正確的,就是最終一致性。

實現分布式的一致性:

除了訊息佇列mq

還有兩階段提交2pc

三階段提交3pc

強一致性 弱一致性 最終一致性

這種方式在es等分布式系統中也有體現,可以設定主shard提交即返回成功,或者需要replica shard提交成功再返回。提到分布式架構就一定繞不開 一致性 問題,而 一致性 其實又包含了資料一致性和事務一致性兩種情況,本文主要討論資料一致性 事務一致性指acid 複製是導致出現資料一致性問題的唯...

Java併發 快取一致性

cpu的時鐘頻率非常的快,跑起來的速度遠遠超過了記憶體 硬碟。碼農翻身 形象的比喻cpu為阿甘,跑的速度是記憶體的100倍,硬碟的1000多萬倍。如果直接靠cpu直接和記憶體打交道,那麼cpu要等待太久,浪費資源。我們平時編寫的程式中,包含著很多連續建立的陣列 物件,各種迴圈 遞迴 呼叫同一函式等,...

高併發下的快取一致性問題

資料讀取的時候 先查快取,快取查不到查資料庫,然後把查到的結果放到快取中。這些都基本上沒有爭議。但是資料更新的時候 到底是先更新資料庫,還是再更新 or刪除 快取 or 先更新 or刪除 快取,再更新資料庫。一直存在很大的爭議。幾種實現方式都會出現資料一致性問題。我就說說目前我們系統是怎麼做的 0 ...