
3月30日云棲社區(qū)在線實(shí)時(shí)分享順利結(jié)束,本次由微博研發(fā)中心技術(shù)經(jīng)理及高級(jí)技術(shù)專(zhuān)家陳飛分享了微博利用阿里云實(shí)現(xiàn)分鐘級(jí)服務(wù)器規(guī)模成倍擴(kuò)容的技術(shù)體系,包括Docker與虛機(jī)結(jié)合的使用經(jīng)驗(yàn)、網(wǎng)絡(luò)架構(gòu)以及負(fù)載均衡、緩存架構(gòu)的跨IDC服務(wù)部署的一些經(jīng)驗(yàn)。本次視頻直播的整理文章、視頻、幻燈片整理完畢,如下內(nèi)容。
DCP設(shè)計(jì)“初心”

圖一 DCP設(shè)計(jì)初心
DCP是微博容器化的混合云彈性調(diào)度運(yùn)維平臺(tái),其誕生初衷是以最低成本實(shí)現(xiàn)彈性能力。DCP系統(tǒng)對(duì)外提供的功能包括集群管理、服務(wù)池之間的調(diào)度。目前使用DCP系統(tǒng)的業(yè)務(wù)方涵蓋微博的核心業(yè)務(wù),主要包括微博平臺(tái)、紅包飛、手機(jī)微博等。
DCP最初的設(shè)計(jì)目標(biāo)主要有三點(diǎn):
要具有彈性能力,當(dāng)時(shí)預(yù)估在春晚峰值時(shí),需要10分鐘16000核,25600GB的計(jì)算資源彈性能力;
能夠節(jié)約成本,設(shè)計(jì)之時(shí)希望2016年春晚的總體成本不超過(guò)2015年,且通過(guò)阿里云等公有云按需付費(fèi)模式,未來(lái)可大幅降低單位成本;
能提供一個(gè)標(biāo)準(zhǔn)的技術(shù)平臺(tái),拉通不同語(yǔ)言、運(yùn)行環(huán)境差異,向微博各個(gè)業(yè)務(wù)系統(tǒng)提供標(biāo)準(zhǔn)的彈性能力。
DCP混合云架構(gòu)設(shè)計(jì)

圖二 DCP混合云架構(gòu)設(shè)計(jì)原則
當(dāng)具體去設(shè)計(jì)這樣一個(gè)系統(tǒng)架構(gòu)時(shí),由于涉及到不同的業(yè)務(wù)方、不同的部門(mén),各個(gè)環(huán)節(jié)協(xié)調(diào)還是比較復(fù)雜的。因此在架構(gòu)設(shè)計(jì)時(shí)必須遵循幾個(gè)具體的原則。
在使用公有云時(shí),不僅要單單使用公有云,要將公有云和專(zhuān)有云結(jié)合使用,最大程度利用公有云按需付費(fèi)的特點(diǎn),降低單位成本,例如在2016年春晚,微博與阿里云合作,在流量峰值到來(lái)的前幾個(gè)小時(shí)才部署了相應(yīng)的公有云資源。同時(shí)業(yè)務(wù)需要在公有云與專(zhuān)有云之間無(wú)差異化部署;
服務(wù)化,系統(tǒng)各組件之間通過(guò)Restful API而不是原來(lái)的運(yùn)維干預(yù)方式進(jìn)行通信。這里要求各組件應(yīng)具有良好的擴(kuò)展性,實(shí)現(xiàn)機(jī)制可插拔;
可伸縮,各系統(tǒng)組件可以根據(jù)管理集群的規(guī)模,實(shí)現(xiàn)自身的自動(dòng)伸縮。各組件應(yīng)無(wú)狀態(tài)、無(wú)單點(diǎn)。運(yùn)維操作自動(dòng)化。

圖三 DCP架構(gòu)分層
DCP架構(gòu)具體分為四層。第一層是不可變基礎(chǔ)設(shè)施,Docker的出現(xiàn)很大程度上改變了原有的運(yùn)維方式,下文將具體介紹在容器化、系統(tǒng)初始化、鏡像分發(fā)、帶寬監(jiān)控方面的實(shí)踐經(jīng)驗(yàn)。第二層主要完成彈性調(diào)度,包括業(yè)務(wù)跨云調(diào)度、調(diào)度機(jī)制的建立、容量評(píng)估。在已有基礎(chǔ)設(shè)施資源前提下,動(dòng)態(tài)合理的分配給各個(gè)業(yè)務(wù)節(jié)點(diǎn)。第三層主要完成服務(wù)發(fā)現(xiàn),在業(yè)務(wù)彈性部署后,調(diào)用方需要快速發(fā)現(xiàn)服務(wù)集群分布的節(jié)點(diǎn),通過(guò)配置中心、負(fù)載均衡、RPC協(xié)同快速實(shí)現(xiàn)發(fā)現(xiàn)機(jī)制。第四層主要完成容器編排,包括自動(dòng)擴(kuò)容和監(jiān)控報(bào)警。

圖四 DCP整體架構(gòu)
上面這張圖是DCP整體架構(gòu)。架構(gòu)的最下層是私有云和阿里云的計(jì)算資源。各個(gè)系統(tǒng)之間通過(guò)API相互通信,利用阿里云的Open API動(dòng)態(tài)創(chuàng)建所需的計(jì)算節(jié)點(diǎn)。再上一層是基礎(chǔ)設(shè)施管理系統(tǒng),負(fù)責(zé)虛機(jī)的創(chuàng)建、鏡像的分發(fā)等服務(wù)抽象和實(shí)現(xiàn),對(duì)外提供和專(zhuān)有云相同的計(jì)算環(huán)境。再上一層通過(guò)Swarm、Mesos實(shí)現(xiàn)了業(yè)務(wù)容器動(dòng)態(tài)調(diào)度框架。最上面一層是業(yè)務(wù)系統(tǒng)。最左邊是一套服務(wù)發(fā)現(xiàn)框架,該框架是基于Consul集群建立配置中心,實(shí)現(xiàn)服務(wù)發(fā)現(xiàn)機(jī)制。
接下來(lái),對(duì)各個(gè)層的實(shí)現(xiàn)進(jìn)行詳細(xì)剖析。
不可變基礎(chǔ)設(shè)施
微博在15年春晚就開(kāi)始嘗試Docker技術(shù),當(dāng)時(shí)目的是讓業(yè)務(wù)與宿主機(jī)的運(yùn)行環(huán)境解耦。Docker解決了業(yè)務(wù)對(duì)運(yùn)行軟件的版本、組件需求,將這些依賴(lài)關(guān)系封裝到Docker Image中,統(tǒng)一了私有云、公有云之間及不同業(yè)務(wù)線之間的交互標(biāo)準(zhǔn)。