侯軍偉:Redis新浪大運(yùn)維
原創(chuàng)2013年4月26日-27日,由51CTO傳媒集團(tuán)旗下WOT(World Of Tech)品牌主辦的2013大數(shù)據(jù)全球技術(shù)峰會(huì)在北京富力萬(wàn)麗酒店召開(kāi)。本次峰會(huì)將圍繞大數(shù)據(jù)基礎(chǔ)架構(gòu)與上層應(yīng)用的生態(tài)系統(tǒng),解決大規(guī)模數(shù)據(jù)引發(fā)的問(wèn)題,探索大數(shù)據(jù)基礎(chǔ)的解決方案,激發(fā)數(shù)據(jù)挖掘帶來(lái)的競(jìng)爭(zhēng)力,讓數(shù)據(jù)發(fā)出聲音。51CTO作為本次峰會(huì)的主辦方,將全程視頻、圖文直播報(bào)道這場(chǎng)數(shù)據(jù)的盛宴,更多內(nèi)容請(qǐng)點(diǎn)擊專(zhuān)題:2013大數(shù)據(jù)全球技術(shù)峰會(huì)。
2013大數(shù)據(jù)全球技術(shù)峰會(huì)專(zhuān)題
在4月26日的NoSQL&NewSQL專(zhuān)場(chǎng)論壇中,新浪高級(jí)DBA盧侯軍偉先生表了主題為“Redis在新浪的大規(guī)模運(yùn)維經(jīng)驗(yàn)”的演講。
Redis簡(jiǎn)介:
Redis是一個(gè)key-value存儲(chǔ)系統(tǒng),它和Memcached很像,支持存儲(chǔ)的value類(lèi)型相對(duì)很多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。這些數(shù)據(jù)類(lèi)型基本全支持push/pop、add/remove及取交集并集和差集及更豐富的操作,并且這些操作都是原子性的。以此為基礎(chǔ),Redis支持各種不同方式的排序。和memcached一樣,為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。區(qū)別的是Redis會(huì)周期性的把更新的數(shù)據(jù)寫(xiě)入磁盤(pán)或者把修改操作寫(xiě)入追加的記錄文件,并且以此為基礎(chǔ)實(shí)現(xiàn)了master-slave(主從)同步。
Redis 是一個(gè)高性能的key-value數(shù)據(jù)庫(kù)。Redis的出現(xiàn)很大程度補(bǔ)償了memcached這類(lèi)key/value存儲(chǔ)的不足,在多種場(chǎng)合可以對(duì)關(guān)系數(shù)據(jù)庫(kù)起到很好的補(bǔ)充作用。它提供了Python,Ruby,Erlang,PHP客戶端,使用很方便。
Redis應(yīng)用:
Redis的一個(gè)很大好處就是可以不用整個(gè)轉(zhuǎn)入到這個(gè)數(shù)據(jù)庫(kù),而是可以沿用之前的MySQL等數(shù)據(jù)庫(kù),而僅在一些特定的應(yīng)用場(chǎng)景通過(guò)Redis的特性提高效率。本文列出了11個(gè)這樣的Web應(yīng)用場(chǎng)景,如顯示***的項(xiàng)目列表、刪除和過(guò)濾、排行榜等相關(guān)需求。
運(yùn)維經(jīng)驗(yàn):
每個(gè)node一個(gè)NodeWatcher線程,每隔2秒鐘檢查一次node的狀態(tài)(syncing、available、unavailable)
如果node連續(xù)max_failures次失敗的話,設(shè)置為unavailable
NodeWatcher將 狀態(tài)存放在NodeManager的狀態(tài)queue中
1.unavailable
處理時(shí)判斷node是否為master,如果為master則執(zhí)行promote_new_master將選出新的master并對(duì)剩余的slave執(zhí)行slaveof,如果是slave的話,則從slave列表中移除
2.syncing
將node加入到unavailable列表中,并從slave列表中移除
3.available
判斷node是否在當(dāng)前的available列表中,如果不在列表中,則加入到available列表中。