《騰訊周小軍:十個人管理1萬多臺 NoSQL 存儲服務(wù)器的秘密》要點:
本文介紹了騰訊周小軍:十個人管理1萬多臺 NoSQL 存儲服務(wù)器的秘密,希望對您有用。如果有疑問,可以聯(lián)系我們。
周小軍
騰訊高級運維工程師,目前在騰訊社交網(wǎng)絡(luò)事業(yè)部負責(zé)社交業(yè)務(wù)海量NoSQL集群運維和團隊管理.曾在天涯社區(qū)任運維副總監(jiān),負責(zé)天涯整體運維.對互聯(lián)網(wǎng)網(wǎng)站架構(gòu)、數(shù)據(jù)中心、云計算及自動化運維等領(lǐng)域有深入研究和理解,積累了十多年的IT運維管理經(jīng)驗.希望窮盡一生來深入鉆研運維領(lǐng)域.
騰訊目前有三大NoSQL分布式存儲系統(tǒng),分別是:
我們是SNG(騰訊社交網(wǎng)絡(luò)事業(yè)部)社交網(wǎng)絡(luò)運營部平臺技術(shù)運營中心下的數(shù)據(jù)運維團隊.團隊主要負責(zé)CKV和Grocery二大NoSQL分布式存儲集群的運營.目前團隊有十幾名工程師,負責(zé)一萬幾千臺存儲服務(wù)器.主要部署在深圳、天津、上海和廣州等大區(qū)域.
存儲服務(wù)器劃分為幾十個SET(倉庫)集群,共有幾百TB的內(nèi)存和SSD存儲容量,服務(wù)于QQ、朋友網(wǎng)、QQ空間、相冊、廣點通、微云、音樂等各類互聯(lián)網(wǎng)核心業(yè)務(wù).
NoSQL集群按SET的方式部署,SET也稱之為“倉庫”.一個SET是一個物理單元.倉庫內(nèi)至少擁有四種服務(wù)器角色:
- 接入機(代理服務(wù)器)
- 存儲機(主機+備機)
- 倉庫管理機
- 搬遷機器
每個SET可部署為跨機架、跨IDC、跨城容災(zāi).一個SET就是一個永不停服、永不丟數(shù)據(jù)的獨立的,標(biāo)準(zhǔn)化的服務(wù)單元,類似于標(biāo)準(zhǔn)化集裝箱.我們最大的SET機器部署數(shù)量不會超過上千臺,超大的SET會加大管理成本.
在騰訊的海量服務(wù)運營模型中,SET是一個非常重要的概念.接入層、邏輯層和數(shù)據(jù)層均按SET單元化來部署.一個業(yè)務(wù)譬如QQ音樂可能接入層和邏輯層各有十幾個SET,數(shù)據(jù)層有幾個SET.SET分別部署到不同的區(qū)域.每個SET都能容納一定數(shù)量的在線用戶(譬如500萬在線用戶).
天津大爆炸2億用戶跨省大調(diào)度
8月12日發(fā)生在天津的特大爆炸事故中,騰訊天津數(shù)據(jù)中心距爆炸現(xiàn)場才1-2公里.當(dāng)時天津數(shù)據(jù)中心高危,現(xiàn)場數(shù)名工程師受傷,市電隨時可能中斷,柴電只能支持不到一天.8月13日我們啟動了大調(diào)度,把天津所容納的二億多華北活躍用戶全部調(diào)度回深圳和上海.調(diào)度過程QQ用戶無感知(從那幾天IT業(yè)界的新聞來看,外界對這一大事件毫無知曉).
這應(yīng)該是中國互聯(lián)網(wǎng)史上最大規(guī)模的一次調(diào)度.調(diào)度的成功受益于SET化的管理,受益于數(shù)據(jù)SET的三地同步.
業(yè)務(wù)數(shù)據(jù)按倉庫為單元,在全國各地IDC部署幾個異地倉庫,通過數(shù)據(jù)流水來實現(xiàn)各異地倉庫間數(shù)據(jù)同步和一致性保證.當(dāng)某一城市的IDC災(zāi)難性故障時,業(yè)務(wù)能迅速切到其他城市IDC恢復(fù)數(shù)據(jù)的讀寫,實現(xiàn)業(yè)務(wù)柔性可用,保證業(yè)務(wù)服務(wù)的持續(xù)性.數(shù)據(jù)的同步由同步中心負責(zé),業(yè)務(wù)寫入同步中心,由各地的倉庫同步服務(wù),從同步中心中讀取數(shù)據(jù),并寫入本地倉庫.
經(jīng)過幾年的不斷打磨及優(yōu)化,我們NoSQL分布式集群的架構(gòu)已經(jīng)非常的成熟,主要有以下幾個特點:
數(shù)據(jù)中心由計算、存儲、傳輸三大要素構(gòu)成,IaaS服務(wù)提出了把傳統(tǒng)數(shù)據(jù)中心的CPU,內(nèi)存,網(wǎng)絡(luò)和存儲等轉(zhuǎn)變?yōu)橘Y源的目標(biāo),為業(yè)務(wù)提供計算資源的池化及智能調(diào)度管理.對于數(shù)據(jù)層我們的目標(biāo)則是DaaS,把數(shù)據(jù)做為服務(wù)提供給用戶.
我們的分布式數(shù)據(jù)庫把存儲資源池化,把內(nèi)存存儲塊及磁盤存儲塊做為資源,放在一個存儲大池子里按照較固定的存儲單元進行管理,并在其之上部署存儲智能調(diào)度系統(tǒng).
因此,我們的上萬臺存儲服務(wù)器已經(jīng)是真正意義上,具備動態(tài)伸縮能力的分布式數(shù)據(jù)庫:
我們的數(shù)據(jù)管理集中化,在數(shù)據(jù)復(fù)雜度以及數(shù)據(jù)量不斷增長的情況下,數(shù)據(jù)運維能夠支撐多變的業(yè)務(wù)需求.
在DaaS中,我們已經(jīng)落地實施了以下幾點:
上萬臺存儲集群的成本優(yōu)化是運營中比較核心的目標(biāo)之一,我們在成本上的措施主要為:
研發(fā)和DBA的關(guān)系就如同一輛車,我們造好一輛車,寫好說明手冊,而DBA則負責(zé)調(diào)教和維護這輛車,讓它能發(fā)揮最高的性能,坐得最舒服
—MySQL研發(fā)團隊成員賴錚
的確,我們運營團隊也是類似,與研發(fā)團隊一起把原始的數(shù)據(jù)庫引擎打磨得更易于運維、性能更高及對業(yè)務(wù)更多的特性支持,發(fā)揮工匠精神,不斷在成本、安全、質(zhì)量和效率上追求極致.
除了研發(fā)團隊,運維團隊本身也是開發(fā)&運維相結(jié)合的團隊,團隊內(nèi)有開發(fā)和運維二種角色:
開發(fā)工程師:負責(zé)持續(xù)集成環(huán)境、流程引擎、接口、代碼審核等工作.
運維工程師:負責(zé)上到產(chǎn)品經(jīng)理,下到任務(wù)粒度級的開發(fā)等職責(zé).
運維強大的工具平臺具備了功能豐富的API接口,譬如身份驗證、流程引擎、CMDB接口、監(jiān)控接口、日志上報、包安裝接口等功能,極大地提高了運維工程師工具開發(fā)效率.
轉(zhuǎn)載請注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/4372.html