從緩存到一致性

緩存的本質:

拋離實現細節來說,緩存的本質就是* 訪問速度更快的數據副本*

從定義而言,強調兩個關鍵詞 更快 副本,並且可以看出緩存是針對查詢的

如何實現更快的訪問?(存儲設備,傳輸距離)

1.性能更好的存儲設備
2.更近的訪問節點(CDN 網絡節點,瀏覽器緩存 本地緩存)

eg:

內存可以看做磁盤的緩存,L1 Cache ,L2 Chace ,高速緩存塊,分部署緩存,數據庫緩存….. 當然根據緩存數據類型不同會有針對不同數據類型的不同的數據結構的緩存架構 eg: KV ,表格 ….

JVM中存儲結構(堆,棧,寄存器 也起到了緩存的作用) ,很多牛逼的算法&數據結構都會對局部性做一定的優化有興趣的可以找資料看看
eg:disruptor 號稱是最快的實現同步數據訪問的解決方案,本質上就是
樂觀所+CAS 來實現無鎖 ; 版本控制來實現有序 (版本或者說序號是保證有序執行的銀彈,可以參照分佈式一致性算法) ;通過數據塊填充來充分利用高速緩存塊
SO 無處不緩存

副本

當然這裏的副本不包括將緩存作爲唯一存儲設備的應用

既然是副本,也就存在着共性的問題—>一致性(一致性在不同的應用場景可能)

數據庫中的隔離級別本質上就是一致性策略問題,當然一致性在各種系統中有着各種各樣的別名,一致性策略也分爲 嚴格一致性,順序一致性

緩存的一個重要的屬性是是否失效,這個失效的時期該如何決定是本文想分享的重點.

不考慮移動,對數據的操作就只有兩種:read , write,爲了簡化問題,我們這裏只討論一個副本
涉及一致性的操作都是發生在write時
緩存置失效可以發生在write前,也可以發生在write後,除非write操作需要阻塞read操作那麼一般放在write後來操作足夠應付大部分場景,對併發算法比較熟悉的同學應該會聯想到一個比較重要的同步算法(COW)

#

本質 : 一致性 , 一致性策略 .
我覺得只要搞懂這兩個詞,足以應付大部分同步問題.
本人不擅長寫作,意會……..

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章