一致性是指資料庫和快取裡的資料是一樣的,如果出現兩者不一樣,就說出現了一致性問題。
一致性優化是指怎麼消除一致性問題,或者出現了一致性問題怎麼去發現並解決。
如果資料庫和快取不一致,會導致系統出現bug,尤其是一些關鍵性的資料,比如餘額。所以在一些不能容忍不一致的場景,是一定要消除不一致的問題。
為什麼會出現資料不一致?
資料庫主從不一致導致的資料庫快取不一致。
淘汰快取失敗導致的資料庫快取不一致。
參考《快取設計 - 網際網路最佳實踐cache aside pattern》中章節drawback
針對主從不一致導致的資料庫快取不一致,有三個方案:
方案一:選擇性讀主:參考《資料庫設計 - 主從一致性》中章節選擇性讀主
方案二:二次淘汰法(非同步,服務)
非同步的方式比如做乙個小工具(比如dts、canal)可以訂閱和分析binlog,再次非同步淘汰快取。最壞的情況是快取裡的髒資料持續時長等於主從同步延時的時間
服務裡也可以進行二次淘汰,第一步del快取的同事,可以開啟乙個timer,觸發1秒後的再次淘汰快取。
方案三:為允許cache miss的場景,設定超時時間,有機會修正(最終一致)
快取一致性
一般應用而言,追求的都是快取的最終一致性。一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 如果key對應的value是一定不存在的,並且對該key併發請求量很大,就會對後端系統造成很大的壓力。這就叫做快取穿透。引起這個問題的主要原因還是高併發的時...
快取一致性
計算機體系結構量化研究方法 第五版 學習筆記 快取一致性 1 快取一致性的問題 2 儲存器一致性的概念 3 一致性的基本實現方案 大型 多級快取可以充分降低處理器對儲存頻寬的需求。採用對稱共享儲存器的計算機通常支援對共享資料與專用資料的快取。多處理器之間的通訊基本上是通過讀寫共享資料實現。為了降低訪...
快取一致性協議
作業系統的cpu和記憶體並不是直接互動操作的。我們的cpu有一級快取,cpu直接操作一級快取,由一級快取和記憶體進行互動。所以同乙個程式,cpu進行切換的時候,切換前和切換後的資料可能會有不一致的情況。那麼這個就是乙個很大的問題了。如何保證各個cpu快取中的資料是一致的。就是cpu的快取一致性問題。...