java基礎篇--如何實現本地緩存和分佈式緩存?

緩存(Cache) 是指將程序或系統中常用的數據對象存儲在像內存這樣特定的介質中,以避免在每次程序調用時,重新創建或組織數據所帶來的性能損耗,從而提高了系統的整體運行速度。

以目前的系統架構來說,用戶的請求一般會先經過緩存系統,如果緩存中沒有相關的數據,就會在其他系統中查詢到相應的數據並保存在緩存中,最後返回給調用方。

緩存既然如此重要,那本課時我們就來重點看一下,應該如何實現本地緩存和分佈式緩存?

典型回答

本地緩存是指程序級別的緩存組件,它的特點是本地緩存和應用程序會運行在同一個進程中,所以本地緩存的操作會非常快,因爲在同一個進程內也意味着不會有網絡上的延遲和開銷。

本地緩存適用於單節點非集羣的應用場景,它的優點是快,缺點是多程序無法共享緩存,比如分佈式用戶 Session 會話信息保存,由於每次用戶訪問的服務器可能是不同的,如果不能共享緩存,那麼就意味着每次的請求操作都有可能被系統阻止,因爲會話信息只保存在某一個服務器上,當請求沒有被轉發到這臺存儲了用戶信息的服務器時,就會被認爲是非登錄的違規操作。

除此之外,無法共享緩存可能會造成系統資源的浪費,這是因爲每個系統都單獨維護了一份屬於自己的緩存,而同一份緩存有可能被多個系統單獨進行存儲,從而浪費了系統資源。

分佈式緩存是指將應用系統和緩存組件進行分離的緩存機制,這樣多個應用系統就可以共享一套緩存數據了,它的特點是共享緩存服務和可集羣部署,爲緩存系統提供了高可用的運行環境,以及緩存共享的程序運行機制。

本地緩存可以使用 EhCache 和 Google 的 Guava 來實現,而分佈式緩存可以使用 Redis 或 Memcached 來實現。

由於 Redis 本身就是獨立的緩存系統,因此可以作爲第三方來提供共享的數據緩存,而 Redis 的分佈式支持主從、哨兵和集羣的模式,所以它就可以支持分佈式的緩存,而 Memcached 的情況也是類似的。

面試常考點分析

本課時的面試題顯然不只是爲了問

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