面試時問到乙個問題,什麼是快取雪崩

2022-01-28 13:45:12 字數 1075 閱讀 2968

早兩天去xx公司面試,面試也有大家都討厭的筆試這一部份。不過我一般不會去寫具體的演算法,只在上面寫上邏輯

如果真的要我寫上具體的演算法,請提供上機環境,畢竟開發與手寫環境不一樣,心情也不一樣。

回到正題,裡面有一道題,說到什麼是快取雪崩。因為之前有做過頁面靜態化,後來mvc也有頁面快取這一塊,所以對快取這塊的

知識了解不是很深。所以當時也答不上來。

快取穿透

查詢乙個必然不存在的資料。比如文章表,查詢乙個不存在的id,每次都會訪問db,如果有人惡意破壞,很可能直接對db造成影響。

快取失效

如果快取集中在一段時間內失效,db的壓力凸顯。這個沒有完美解決辦法,但可以分析使用者行為,盡量讓失效時間點均勻分布。

快取系統不得不考慮的另乙個問題是快取穿透與失效時的雪崩效應。快取穿透是指查詢乙個一定不存在的資料,由於快取是不命中時被動寫的,並且出於容錯考慮,如果從儲存層查不到資料則不寫入快取,這將導致這個存在的資料每次請求都要到儲存層去查詢,失去了快取的意義。

有 很多種方法可以有效地解決快取穿透問題,最常見的則是採用布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個一定不存在的資料會被 這個bitmap攔截掉,從而避免了對底層儲存系統的查詢壓力。在資料魔方裡,我們採用了乙個更為簡單粗暴的方法,如果乙個查詢返回的資料為空(不管是數 據不存在,還是系統故障),我們仍然把這個空結果進行快取,但它的過期時間會很短,最長不超過五分鐘。

緩 存失效時的雪崩效應對底層系統的衝擊非常可怕。遺憾的是,這個問題目前並沒有很完美的解決方案。大多數系統設計者考慮用加鎖或者佇列的方式保證快取的單線 程(程序)寫,從而避免失效時大量的併發請求落到底層儲存系統上。在資料魔方中,我們設計的快取過期機制理論上能夠將各個客戶端的資料失效時間均 勻地分布在時間軸上,一定程度上能夠避免快取同時失效帶來的雪崩效應。

寫上這一篇文章,記錄一下不了解的知識,作為乙個筆記,挺好的。

最近也還在找工作,本人在廣州,想找乙個作為開發管理者的角色的工作來做。我也有過專案管理的經驗。

面試過幾家公司,想回中山工作。有中山的工作介紹不?

以上的技術內容參考於:

乙個朋友去新浪樂居面試時的面試題

以下是他回憶當時的筆試題 一 1 有如下html 1 用js取得 方法取得該物件 2 用 屬性取得屬性title的屬性值 3 用 方法取得屬性sina title的屬性值 2 php中對陣列序列化和反序列化的函式分別是 和 3 rawurlencode和urlencode函式的區別是 4 php中過...

跳還是不跳,是乙個問題 跳槽時該如何權衡?

俺不久前換了一家公司。新公司的老闆,為了充分壓榨俺的剩餘價值,要求俺既要兼顧新產 品的架構設計,同時還要負責公司的研發管理工作。所以,最近1 2個月忙得不可開交,連俺的部落格也受了牽連,更新明顯少了。今天正好有點空,順便和大夥兒聊一下 俺是如何評判乙個公司的好壞,從而權衡要不要跳槽。跳與不跳的決定因...

原來是這樣 C 中new乙個物件時,發生了什麼事?

問 當我們new乙個物件時,會發生什麼事?答 呼叫該型別的建構函式。問題看似簡單,不過事實上,clr做的比這要多。要準確回答這個問題,還要分情況來說。new乙個引用型別 首先,要例項化乙個引用型別,就一定需要在堆上分配記憶體。要分配記憶體,就需要先計算出這個引用型別占多大空間,需要給它分配多少記憶體...