Aerospike(3) - Evict機制

注:本文轉(zhuǎn)自我的個人博客 Aerospike(3) - Evict機制缎浇。

在實時的場景中淘衙,我們往往會對Aerospike/Redis等設置evict機制,來防止流量暴增帶來的存儲系統(tǒng)崩潰缨叫。

原理

aerospike-evict機制
aerospike-evict機制

原理如上圖所示祝峻,在Aerospike中,有TTL的數(shù)據(jù)根據(jù)TTL的大小被等分在這個橫軸上堵漱,每個bucket的大小由最大的TTL和設置的evict-hist-buckets來決定综慎。其中:

bucket_width = max_ttl / evict-hist-buckets

evict-hist-buckets可以基于namespace去設置,并且可以動態(tài)修改勤庐,無需啟動集群示惊。我們會設置high-water-memory-pct或者high-water-disk-pct來決定開始evict數(shù)據(jù)的時機好港,當滿足條件后,剩下就是等nsup線程啟動米罚,從柱狀圖中的第一個bucket開始驅(qū)逐钧汹。

限制

當然,實際情況不會永遠這么簡單录择。Evict機制本身就是獲取與丟棄之間的博弈的產(chǎn)物拔莱,所以也許根本就找不到一個跟實際業(yè)務情況完全匹配的現(xiàn)成方案。Aerospike的evict機制并不完美隘竭,有時候存儲超過了你所設置的HWM塘秦,但是并沒有數(shù)據(jù)被驅(qū)逐。Aerospike3.8之后的evict機制中有兩個特點:

  • evict-hist-buckets可以動態(tài)配置动看,也就是用戶可以自定義柱狀圖的粒度和evict數(shù)據(jù)的粒度尊剔。
  • Evict的單位是bucket,不能將bucket中的部分數(shù)據(jù)彈出菱皆。

下面引入evict機制中的另一個參數(shù): evict-tenths-pct须误。

這個參數(shù)決定了每次evict的數(shù)量。舉個極端例子仇轻,假設柱狀圖中的元素不夠均勻京痢,全部被分配到了第1個bucket上,那么不可能將第1個bucket的數(shù)據(jù)全部彈出吧篷店?所以這就是evict-tenths-pct的作用祭椰。類似于這種情況,可以動態(tài)調(diào)整evict-hist-buckets船庇,降低柱狀圖中的粒度,使得第1個bucket中的數(shù)量少于evict-tenths-pct所限制的數(shù)量侣监,從而達到evict的目的鸭轮。不過同時注意,bucket的對象也有一定的內(nèi)存占用,具體可以在下面鏈接中查看。

所以說要尔,這種Evict的機制也帶來了一些風險鲁豪,雖然比Redis的evict策略控制的更加精細化,但是在一些極端場景中秃流,很容易出現(xiàn)需要手工調(diào)整參數(shù),或者根本就無法evict的情況(幾天前因為業(yè)務流量上漲剛手工調(diào)整過)。

調(diào)優(yōu)

Aerospike的evict機制主要依賴于上述兩個參數(shù)逮京,如果線上出現(xiàn)故障,可以根據(jù)日志來調(diào)整自己的策略束莫。在此截取部分官方的Log來加以闡釋:

Apr 07 2016 13:42:17 GMT: WARNING (nsup): (thr_nsup.c:1068)
{test} no records below eviction void-time 200346037 - insufficient histogram resolution?

void-time是由evict-tenths-pct決定的threshold bucket的時間戳懒棉,這個時間戳是從2010年1月1日算起草描,可以理解為是Aerospike自己的時間戳〔哐希可以看出此時的threshold bucket是第1個bucket穗慕,和之前的解決方案類似,調(diào)整evict-hist-buckets即可妻导。

Jan 30 2017 02:36:21 GMT: WARNING (nsup): (thr_nsup.c:1043) {test} no records below eviction void-time 222541923 - threshold bucket 361, width 259 sec, count 686375 > target 530312 (0.5 pct)

此時threshold bucket是361逛绵,每個bucket時間寬度為259秒,但此時在第一個Bucket中的元素為686375倔韭,超過了evict-tenths-pct設置的0.5pct的數(shù)量术浪,所以無法evict。

參考資料

加一Blog
加一Blog
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末狐肢,一起剝皮案震驚了整個濱河市添吗,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌份名,老刑警劉巖碟联,帶你破解...
    沈念sama閱讀 216,651評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異僵腺,居然都是意外死亡鲤孵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,468評論 3 392
  • 文/潘曉璐 我一進店門辰如,熙熙樓的掌柜王于貴愁眉苦臉地迎上來普监,“玉大人,你說我怎么就攤上這事琉兜】” “怎么了?”我有些...
    開封第一講書人閱讀 162,931評論 0 353
  • 文/不壞的土叔 我叫張陵豌蟋,是天一觀的道長廊散。 經(jīng)常有香客問我,道長梧疲,這世上最難降的妖魔是什么允睹? 我笑而不...
    開封第一講書人閱讀 58,218評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮幌氮,結果婚禮上缭受,老公的妹妹穿的比我還像新娘。我一直安慰自己该互,他們只是感情好米者,可當我...
    茶點故事閱讀 67,234評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著宇智,像睡著了一般塘雳。 火紅的嫁衣襯著肌膚如雪陆盘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,198評論 1 299
  • 那天败明,我揣著相機與錄音隘马,去河邊找鬼。 笑死妻顶,一個胖子當著我的面吹牛酸员,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播讳嘱,決...
    沈念sama閱讀 40,084評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼幔嗦,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了沥潭?” 一聲冷哼從身側響起邀泉,我...
    開封第一講書人閱讀 38,926評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎钝鸽,沒想到半個月后汇恤,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,341評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡拔恰,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,563評論 2 333
  • 正文 我和宋清朗相戀三年因谎,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片颜懊。...
    茶點故事閱讀 39,731評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡财岔,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出河爹,到底是詐尸還是另有隱情匠璧,我是刑警寧澤,帶...
    沈念sama閱讀 35,430評論 5 343
  • 正文 年R本政府宣布咸这,位于F島的核電站夷恍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏炊苫。R本人自食惡果不足惜裁厅,卻給世界環(huán)境...
    茶點故事閱讀 41,036評論 3 326
  • 文/蒙蒙 一冰沙、第九天 我趴在偏房一處隱蔽的房頂上張望侨艾。 院中可真熱鬧,春花似錦拓挥、人聲如沸唠梨。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,676評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽当叭。三九已至茬故,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間蚁鳖,已是汗流浹背磺芭。 一陣腳步聲響...
    開封第一講書人閱讀 32,829評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留醉箕,地道東北人钾腺。 一個月前我還...
    沈念sama閱讀 47,743評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像讥裤,于是被迫代替她去往敵國和親放棒。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,629評論 2 354

推薦閱讀更多精彩內(nèi)容