精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

memcache內核,一文搞定!面試再也不怕了!!!(值得收藏)

開發 開發工具 架構
memcache是互聯網分層架構中,使用最多的的KV緩存。面試的過程中,memcache相關的問題幾乎是必問的,關于memcache的面試提問,你能回答到哪一個層次呢?

memcache是互聯網分層架構中,使用最多的的KV緩存。面試的過程中,memcache相關的問題幾乎是必問的,關于memcache的面試提問,你能回答到哪一個層次呢?

畫外音:很可能關乎,你拿到offer的薪酬檔位。

[[268097]]

***類問題:知道不知道

這一類問題,考察用沒用過,知不知道,相對比較好回答。

關于memcache一些基礎特性,使用過的小伙伴基本都能回答出來:

  • mc的核心職能是KV內存管理,value存儲***為1M,它不支持復雜數據結構(哈希、列表、集合、有序集合等);
  • mc不支持持久化;
  • mc支持key過期;
  • mc持續運行很少會出現內存碎片,速度不會隨著服務運行時間降低;
  • mc使用非阻塞IO復用網絡模型,使用監聽線程/工作線程的多線程模型;

面對這類封閉性的問題,一定要斬釘截鐵,毫無猶豫的給出回答。

第二類問題:為什么(why),什么(what)

這一類問題,考察對于一個工具,只停留在使用層面,還是有原理性的思考。

(1) memcache為什么不支持復雜數據結構?為什么不支持持久化?

業務決定技術方案,mc的誕生,以“以服務的方式,而不是庫的方式管理KV內存”為設計目標,它顛覆的是,KV內存管理組件庫,復雜數據結構與持久化并不是它的初衷。

當然,用“顛覆”這個詞未必不合適,庫和服務各有使用場景,只是在分布式的環境下,服務的使用范圍更廣。設計目標,誕生背景很重要,這一定程度上決定了實現方案,就如redis的出現,是為了有一個更好用,更多功能的緩存服務。

畫外音:我很喜歡問這個問題,大部分候選人面對這個沒有標準答案的問題,狀態可能是蒙圈。

(2) memcache是用什么技術實現key過期的?

懶淘汰(lazy expiration)。

(3) memcache為什么能保證運行性能,且很少會出現內存碎片?

提前分配內存。

(4) memcache為什么要使用非阻塞IO復用網絡模型,使用監聽線程/工作線程的多線程模型,有什么優缺點?

目的是提高吞吐量。

多線程能夠充分的利用多核,但會帶來一些鎖沖突。

面對這類半開放的問題,有些并沒有標準答案,一定要回答出自己的思考和見解。

第三類問題:怎么做(how) | 文本剛開始

這一類問題,探測候選人理解得有多透,掌握得有多細,對技術有多刨根究底。

畫外音:所謂“好奇心”,真的很重要,只想要“一份工作”的技術人很難有這種好奇心。

(1) memcache是什么實現內存管理,以減小內存碎片,是怎么實現分配內存的?

開講之前,先解釋幾個非常重要的概念:

  • chunk:它是將內存分配給用戶使用的最小單元。
  • item:用戶要存儲的數據,包含key和value,最終都存儲在chunk里。
  • slab:它會管理一個固定chunk size的若干個chunk,而mc的內存管理,由若干個slab組成。

畫外音:為了避免復雜性,本文先不引入page的概念了。

如上圖所示,一系列slab,分別管理128B,256B,512B…的chunk內存單元。

將上圖中管理128B的slab0放大:

能夠發現slab中的一些核心數據結構是:

  • chunk_size:該slab管理的是128B的chunk
  • free_chunk_list:用于快速找到空閑的chunk
  • chunk[]:已經預分配好,用于存放用戶item數據的實際chunk空間

畫外音:其實還有lru_list。

(2) 假如用戶要存儲一個100B的item,是如何找到對應的可用chunk的呢?

會從最接近item大小的slab的chunk[]中,通過free_chunk_list快速找到對應的chunk,如上圖所示,與item大小最接近的chunk是128B。

(3) 為什么不會出現內存碎片呢?

拿到一個128B的chunk,去存儲一個100B的item,余下的28B不會再被其他的item所使用,即:實際上浪費了存儲空間,來減少內存碎片,保證訪問的速度。

畫外音:理論上,內存碎片幾乎不存在。

(4) memcache通過slab,chunk,free_chunk_list來快速分配內存,存儲用戶的item,那它又是如何快速實現key的查找的呢?

沒有什么特別算法:

  • 通過hash表實現快速查找
  • 通過鏈表來解決沖突

用最樸素的方式,實現key的快速查找。

(5) 隨著item的個數不斷增多,hash沖突越來越大,hash表如何保證查詢效率呢?

當item總數達到hash表長度的1.5倍時,hash表會動態擴容,rehash將數據重新分布,以保證查找效率不會不斷降低。

(6) 擴展hash表之后,同一個key在新舊hash表內的位置會發生變化,如何保證數據的一致性,以及如何保證遷移過程服務的可用性呢(肯定不能加一把大鎖,遷移完成數據,再重新服務吧)?

哈希表擴展,數據遷移是一個耗時的操作,會有一個專門的線程來實施,為了避免大鎖,采用的是“分段遷移”的策略。

當item數量達到閾值時,遷移線程會分段遷移,對hash表中的一部分桶進行加鎖,遷移數據,解鎖:

  • 一來,保證不會有長時間的阻塞,影響服務的可用性
  • 二來,保證item不會在新舊hash表里不一致

(7) 新的問題來了,對于已經存在與舊hash表中的item,可以通過上述方式遷移,那么在item遷移的過程中,如果有新的item插入,是應該插入舊hash表還是新hash表呢?

memcache的做法是,判斷舊hash表中,item應該插入的桶,是否已經遷移至新表中:

  • 如果已經遷移,則item直接插入新hash表
  • 如果還沒有被遷移,則直接插入舊hash表,未來等待遷移線程來遷移至新hash表

(8) 為什么要這么做呢,不能直接插入新hash表嗎?

memcache沒有給出官方的解釋,樓主揣測,這種方法能夠保證一個桶內的數據,只在一個hash表中(要么新表,要么舊表),任何場景下都不會出現,舊表新表查詢兩次,以提升查詢速度。

(9) memcache是怎么實現key過期的,懶淘汰(lazy expiration)具體是怎么玩的?

實現“超時”和“過期”,最常見的兩種方法是:

  • 啟動一個超時線程,對所有item進行掃描,如果發現超時,則進行超時回調處理
  • 每個item設定一個超時信號通知,通知觸發超時回調處理

這兩種方法,都需要有額外的資源消耗。

mc的查詢業務非常簡單,只會返回cache hit與cache miss兩種結果,這種場景下,非常適合使用懶淘汰的方式。

懶淘汰的核心是:

  • item不會被主動淘汰,即沒有超時線程,也沒有信號通知來主動檢查
  • item每次會查詢(get)時,檢查一下時間戳,如果已經過期,被動淘汰,并返回cache miss

舉個例子,假如set了一個key,有效期100s:

  • 在第50s的時候,有用戶查詢(get)了這個key,判斷未過期,返回對應的value值
  • 在第200s的時候,又有用戶查詢(get)了這個key,判斷已過期,將item所在的chunk釋放,返回cache miss

這種方式的實現代價很小,消耗資源非常低:

  • 在item里,加入一個過期時間屬性
  • 在get時,加入一個時間判斷

內存總是有限的,chunk數量有限的情況下,能夠存儲的item個數是有限的,假如chunk被用完了,該怎么辦?

仍然是上面的例子,假如128B的chunk都用完了,用戶又set了一個100B的item,要不要擠掉已有的item?要。

這里的啟示是:

  • 即使item的有效期設置為“***”,也可能被淘汰;
  • 如果要做全量數據緩存,一定要仔細評估,cache的內存大小,必須大于,全量數據的總大小,否則很容易采坑;

(10) 擠掉哪一個item?怎么擠?

這里涉及LRU淘汰機制。

如果操作系統的內存管理,最常見的淘汰算法是FIFO和LRU:

  • FIFO(first in first out):***被set的item,***被淘汰
  • LRU(least recently used):最近最少被使用(get/set)的item,***被淘汰

使用LRU算法擠掉item,需要增加兩個屬性:

  • 最近item訪問計數
  • 最近item訪問時間

并增加一個LRU鏈表,就能夠快速實現。

畫外音:所以,管理chunk的每個slab,除了free_chunk_list,還有lru_list。

思路比結論重要。

【本文為51CTO專欄作者“58沈劍”原創稿件,轉載請聯系原作者】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO專欄
相關推薦

2021-04-22 07:49:51

Vue3Vue2.xVue3.x

2023-02-28 17:27:02

分庫分表中間件

2022-07-11 07:36:36

緩存緩存雪崩緩存擊穿

2024-12-04 06:00:00

C#深拷貝

2021-05-08 07:53:33

面試線程池系統

2022-04-01 07:52:42

JavaScript防抖節流

2021-08-10 18:36:02

Express原理面試

2020-11-24 07:48:32

React

2020-10-20 09:12:57

axios核心原理

2020-10-28 09:36:46

K8S容器項目

2020-04-30 10:24:35

Spring循環依賴Java

2023-11-28 17:49:51

watch?computed?性能

2019-09-02 07:42:50

nginx服務器跨域

2019-04-01 05:02:48

搜索架構檢索

2022-10-31 11:10:49

Javavolatile變量

2020-10-15 12:52:46

SpringbootJava編程語言

2019-09-03 10:40:23

數據結構HTML編程

2022-08-27 13:49:36

ES7promiseresolve

2024-03-26 00:33:59

JVM內存對象

2020-05-08 13:49:02

開源許可證商用項目
點贊
收藏

51CTO技術棧公眾號

欧美成人精品三级网站| 无码国产精品一区二区色情男同| 久久中文字幕二区| 日韩美女在线视频| 国产真实乱子伦| 777电影在线观看| 国产成人自拍高清视频在线免费播放| 97国产精品人人爽人人做| 天天舔天天操天天干| 日韩激情精品| 欧美色大人视频| 精品国偷自产一区二区三区| 韩日视频在线| 国产99久久久国产精品潘金 | 亚洲综合图区| 久久久久久久久久久久久女国产乱 | 亚洲小少妇裸体bbw| 亚洲欧洲av另类| 欧美日韩高清在线一区| 亚洲国产综合一区| 久久99久久久欧美国产| 51久久精品夜色国产麻豆| 粉嫩av性色av蜜臀av网站| 国产成人调教视频在线观看| 精品伦理精品一区| 中文字幕亚洲影院| 日韩不卡在线| 色网综合在线观看| 亚洲中文字幕无码av永久| 成人日批视频| 国产精品传媒视频| 日韩精品在在线一区二区中文| 日韩一级中文字幕| 国产精品一区三区| 91久久精品美女高潮| 中文在线最新版天堂| 国产精品一区亚洲| 97视频人免费观看| 久久综合亚洲色hezyo国产| 91精品一区国产高清在线gif| 国产亚洲精品一区二555| 免费成人深夜夜行p站| 国产精品中文字幕制服诱惑| 欧美mv和日韩mv国产网站| 久久精品久久99| 永久免费观看精品视频| 欧美精品色综合| 国产九九热视频| 日韩毛片一区| 欧美日韩国产综合一区二区三区| 欧美一级裸体视频| 国产成人午夜性a一级毛片| 在线观看三级视频欧美| 亚欧在线免费观看| 日韩欧美2区| 欧美日韩一区在线| 日韩高清第一页| 国产精品美女久久久久人| 制服视频三区第一页精品| 亚洲欧美天堂在线| 欧美一区一区| 精品99一区二区| 在线黄色免费网站| 视频一区中文| 综合欧美国产视频二区| 91香蕉视频污在线观看| 亚洲精品在线观看91| 欧美日韩第一视频| 日操夜操天天操| 午夜亚洲性色福利视频| 国产高清视频一区三区| 中文在线a天堂| 国产一区二区三区在线观看免费视频| 91亚洲精品丁香在线观看| 欧美一区二区三区激情| 91亚洲男人天堂| 视频一区二区三区在线观看| 九七电影韩国女主播在线观看| 亚洲乱码中文字幕综合| 成年人网站国产| 欧美片第1页| 欧美丰满一区二区免费视频| 东京热av一区| 欧美日韩国产一区二区三区不卡 | 激情小说中文字幕| 中日韩男男gay无套| 国产精品久久久久久超碰| 国产乱人乱偷精品视频a人人澡| 国产成人激情av| 欧美日韩一区二区三| 精品麻豆一区二区三区| 婷婷六月综合网| 久久婷婷综合色| 中文在线综合| 国产亚洲精品一区二555| 九九免费精品视频| 久久在线精品| 国产精品10p综合二区| 成人精品福利| 午夜精品在线看| 亚洲xxx在线观看| 婷婷亚洲成人| 色综合五月天导航| 亚洲专区第一页| 97se亚洲国产综合自在线观| av不卡在线免费观看| 波多野结衣亚洲一二三| 欧美一区二区三区思思人| 一级性生活大片| 欧美日韩三区| 国产专区精品视频| 青青草视频在线观看| 一卡二卡欧美日韩| 亚洲最大天堂网| 久久av影视| 久久久亚洲天堂| 国产又粗又猛又黄又爽| 国产欧美一区二区精品久导航| 男女激情免费视频| 国产日韩在线观看视频| 色琪琪综合男人的天堂aⅴ视频| 日韩三级视频在线| 国产精品一区专区| 黄色一级片网址| 91欧美精品| 亚洲欧美999| 亚洲男人的天堂在线视频| 国产成人一区在线| 在线无限看免费粉色视频| 经典三级一区二区| 亚洲人成电影网站色| 91精品国产乱码久久久张津瑜| 国产福利一区在线| 成人高清dvd| 91精品国产色综合久久不卡粉嫩| 伊人亚洲福利一区二区三区| 亚洲AV无码成人精品区东京热| 成人免费av在线| 成人小视频在线观看免费| 精品久久亚洲| 久久成人av网站| 国产巨乳在线观看| 综合久久给合久久狠狠狠97色| 最新中文字幕2018| 欧美偷拍综合| 国产在线视频欧美| bt在线麻豆视频| 91精品国产91久久久久久最新毛片| 男女男精品视频网站| 秋霞国产午夜精品免费视频| 先锋影音亚洲资源| 国产91亚洲精品久久久| 最新亚洲国产精品| 91中文字幕在线播放| 国产精品国产三级国产aⅴ原创| 日本肉体xxxx裸体xxx免费| 999国产精品999久久久久久| 成人a在线观看| 2024最新电影在线免费观看| 日韩一级成人av| 国产一级片免费观看| 播五月开心婷婷综合| 六月激情综合网| 欧美一区二区三| 亚洲精品日韩av| 黄色影院在线看| 亚洲免费av片| 亚洲中文一区二区三区| 亚洲美腿欧美偷拍| 国产chinese中国hdxxxx| 夜夜嗨一区二区| 日本10禁啪啪无遮挡免费一区二区| 日韩一区精品| 欧美国产视频一区二区| 天堂在线资源8| 欧美性猛交一区二区三区精品| 黄色录像一级片| 成人免费毛片a| 国产日韩一区二区在线观看| 91亚洲国产高清| 国产精品99久久久久久久| 美女高潮视频在线看| 在线午夜精品自拍| 丰满人妻一区二区三区免费视频| 欧美性猛交xxxx黑人猛交| 男人天堂资源网| 成人福利视频在线看| 中文字幕欧美人妻精品一区| 亚洲午夜精品一区二区国产 | 在线播放国产视频| 国产亚洲高清视频| 99亚洲精品视频| 中国av一区| 91福利视频导航| 国产亚洲一区二区手机在线观看 | 国产超碰人人爽人人做人人爱| 国产精品国产三级国产三级人妇 | 一本久久精品一区二区| 日韩av手机在线免费观看| 99久久精品免费观看| 国产福利在线免费| 国产日韩欧美| 久久最新免费视频| 九九在线高清精品视频| 高清av免费一区中文字幕| av成人免费看| 91成人免费观看网站| 成人免费高清| 中文字幕欧美日韩在线| 天天色棕合合合合合合合| 欧美一区二区三区日韩| 中文字幕av影视| 精品福利在线视频| 免费无遮挡无码永久在线观看视频 | 国产三级伦理在线| 久久偷看各类女兵18女厕嘘嘘| 蜜桃视频在线播放| 亚洲国产精品女人久久久| 国产精品热久久| 欧美视频一二三区| www.国产一区二区| 天天综合色天天综合| 国产精品九九九九九九| 国产精品久久久久久久久动漫| 亚洲自拍偷拍一区二区| av不卡免费在线观看| 宇都宫紫苑在线播放| 久久精品噜噜噜成人av农村| 欧美成人精品欧美一级乱| 亚洲精品女人| 人妻夜夜添夜夜无码av| 亚洲天天综合| 亚洲自拍偷拍一区二区三区| 日韩欧美视频| 亚洲欧美日韩精品综合在线观看| 国产精品探花在线观看| 久久亚裔精品欧美| 日本午夜精品| 精品一区二区三区免费毛片| 粉嫩久久久久久久极品| 国产精品yjizz| 超碰精品在线观看| 国产精品v欧美精品v日韩| 国产乱论精品| 久久99久久99精品蜜柚传媒| 欧美电影完整版在线观看| 精品1区2区| 蜜乳av综合| 五月天色一区| 久久麻豆精品| 中国女人做爰视频| 欧美日韩日本国产亚洲在线| 日韩国产成人无码av毛片| 亚洲高清二区| 国产成人无码精品久久久性色| 亚洲一区二区动漫| 色悠悠久久综合网| 精品亚洲成av人在线观看| 久久精品国产99久久99久久久| 国产精品白丝av| 国产麻豆xxxvideo实拍| 久久久亚洲国产美女国产盗摄 | 亚洲精品综合在线| 久久亚洲成人av| 岛国精品视频在线播放| chinese国产精品| 欧美日韩一区二区三区在线看| 91资源在线视频| 亚洲国产精品99| 国产福利第一视频在线播放| 久久精品免费电影| 大桥未久在线视频| 国产精品免费在线免费| 国产亚洲高清一区| 六十路精品视频| 欧美h版在线| 国产日本在线播放| 日本网站在线观看一区二区三区| 99999精品| 97久久精品人人做人人爽50路| 亚洲a v网站| 亚洲日本在线看| 91视频免费网址| 这里是久久伊人| 午夜视频福利在线| 中文字幕视频在线免费欧美日韩综合在线看| 欧美黑人激情| 欧美在线视频一区二区| 日韩成人一区| 久久久久久久久一区二区| 日韩啪啪电影网| 精品少妇人妻av免费久久洗澡| 美国三级日本三级久久99| 波多野结衣加勒比| 国产精品第一页第二页第三页 | 欧美日韩精品专区| 色噜噜在线播放| 色偷偷88888欧美精品久久久 | 在线日本视频| 97超级碰碰人国产在线观看| 91精品网站在线观看| 久久久久免费网| 欧美国产专区| 无需播放器的av| 久久综合久久鬼色中文字| 欧美成人777| 在线影视一区二区三区| 神马久久久久久久久久| www.xxxx欧美| 欧美日韩亚洲国产| 鲁丝片一区二区三区| 欧美日韩国产高清| 亚洲天堂av一区二区| 国产偷国产偷精品高清尤物| 国产污视频在线看| 日韩午夜小视频| 欧美激情免费| 国产精品欧美日韩| 欧美日韩播放| 黄色一级视频片| 丁香六月综合激情| 草视频在线观看| 91精品国产一区二区三区| 国产原创av在线| 日韩av成人在线| 少妇久久久久| 欧美网站免费观看| av激情亚洲男人天堂| 国产无套在线观看| 精品国产第一区二区三区观看体验| 麻豆91在线| 成人免费视频97| 99久久国产综合精品成人影院| 男女污污的视频| 国产视频一区二区在线| 亚洲黄色免费观看| 亚洲欧美国内爽妇网| 欧美性xxx| 欧美日产一区二区三区在线观看| 中文亚洲免费| 欧美 日本 国产| 狠狠综合久久av一区二区小说 | 国产精品伦理一区| www.亚洲人.com| 精品国产欧美| 国产 欧美 日本| 成人妖精视频yjsp地址| 国产一二三四在线| 亚洲黄色免费三级| 伊人久久精品一区二区三区| 欧美日韩在线精品一区二区三区| 久久久久久网| 国产18无套直看片| 在线播放中文一区| 男男gaygays亚洲| 精品在线不卡| 老司机精品福利视频| 亚洲精品国产精品国自产网站| 欧美曰成人黄网| 麻豆视频在线观看免费| 成人av资源网| 一本久久知道综合久久| 男女做爰猛烈刺激| 666欧美在线视频| 免费在线看污片| 欧美人xxxxx| 国内不卡的二区三区中文字幕| 欧美日韩免费一区二区| 亚洲精品成人网| 国产原创一区| 一区精品视频| 高清视频一区二区| 亚洲欧美偷拍一区| 精品国产一区二区三区四区在线观看 | 日韩精品在线看片z| 日韩伦理在线一区| 亚洲欧美日产图| 国产成人精品aa毛片| 在线观看 亚洲| 九九久久久久久久久激情| 日本国产精品| 亚洲 欧美 另类人妖| 亚洲成人av福利| 69久久夜色| 国产亚洲欧美一区二区| 日本va欧美va精品| 久久亚洲AV无码| 中文字幕不卡av| 高清精品视频| 一道本在线免费视频| 婷婷中文字幕综合| 看女生喷水的网站在线观看| 久久精品综合一区| 精品亚洲aⅴ乱码一区二区三区| 日韩欧美一区二区一幕| 日韩在线欧美在线| 中文字幕亚洲影视| 丰满饥渴老女人hd| 欧美日韩亚洲高清一区二区| 九色porny丨入口在线|