日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
微博Docker化混合云平臺設(shè)計首度揭秘!

微博 docker 化混合云平臺設(shè)計首度揭秘!

作者:王立恒 2016-01-04 11:47:07

云計算

混合云 混合云架構(gòu)除了妥善集成內(nèi)部硬體資源,解決內(nèi)部的彈型需求外,當系統(tǒng)面臨流量劇增的峰值事件,亦可以將過多的流量引導(dǎo)至外部公有云,減輕內(nèi)部系統(tǒng)的壓力。微博混合云系統(tǒng)不單只是一般的混合云,而是導(dǎo)入了Docker,透過Docker Container快速部署的特性,解決爆量事件對微博系統(tǒng)帶來的壓力。

創(chuàng)新互聯(lián)建站成立于2013年,先為南京等服務(wù)建站,南京等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為南京企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。

8億用戶、單日活躍人數(shù)超過1億人、每日超過600億次的API調(diào)度、超過1兆次遠端程序呼叫,甚至連Log記錄檔每天都爆增100TB,這是新浪微博平臺維運架構(gòu)師王關(guān)勝所面對的挑戰(zhàn),他得設(shè)計出一個有能力勝任這些考驗的微博系統(tǒng)的新一代架構(gòu),而且高層給他的要求是,系統(tǒng)反應(yīng)時間不得超過 50ms。

王關(guān)勝表示,微博如此大規(guī)模的業(yè)務(wù),除了面臨系統(tǒng)快速更新的任務(wù),各種不同系統(tǒng)元件間的依賴關(guān)系也相當復(fù)雜。而當國際事件、名人丑聞等高關(guān)注度的議題發(fā)生時,經(jīng)常導(dǎo)致微博的業(yè)務(wù)量遽增,使得系統(tǒng)流量達到頂峰。

尤其遇到大型節(jié)日或活動時,如元旦、春晚、圣誕節(jié)還有紅包飛等大型活動,同樣也會為微博帶來巨大的流量挑戰(zhàn)。王關(guān)勝表示,位于三節(jié)的日子,微博的系統(tǒng)流量,會在3個小時內(nèi)沖上頂峰,而紅包飛則是帶來瞬間的峰值流量,在兩個小時內(nèi)就達到***點。過去面對此樣的峰值事件,微博需要調(diào)度大量硬體設(shè)備。而如此做法,除了成本高外,系統(tǒng)在進行水平擴充時,也必須耗費更多的時間。

過長的前置作業(yè)時間為微博帶來營運痛點

而繁瑣擴充流程所花費的時間,為微博帶來了營運痛點。過去當峰值事件出現(xiàn)時,首先,維運團隊必須申請實體機器,將其登入組態(tài)管理資料庫(CMDB),在機房安裝妥當后,交予***線作業(yè)人員進行初始化,并開始進行部署作業(yè),如環(huán)境部署、監(jiān)控部署、服務(wù)部署及流量導(dǎo)入等流程。

王關(guān)勝表示,過去的水平擴充的方法,也可能因為各個服務(wù)間的系統(tǒng)環(huán)境差異,無法充分使用硬體資源,即使有多余的伺服器也無法靈活調(diào)度。然而,在設(shè)備充足的狀況下,完成正常的設(shè)備申請程序也必須花上一天,甚至可能碰上沒有足夠設(shè)備的狀況,使得系統(tǒng)進行水平擴充花上更多時間。

另外,微博也有許多使用率不高、閒置在各叢集跟服務(wù)池的實體基礎(chǔ)設(shè)施,而微博過去在應(yīng)付紅包飛、三節(jié)爆增流量的作法,會預(yù)先在各個業(yè)務(wù)的伺服器叢集,準備多余硬體設(shè)備,用來因應(yīng)峰值突發(fā)的事件。而預(yù)先準備多余設(shè)備,則包含采購周期過長、機房空間不足所帶來的高營運成本外等缺點。

而設(shè)備申請時間周期長、使用率不高的閒置設(shè)備,則對新浪微博帶來龐大的成本壓力。而因為面臨這些挑戰(zhàn)、痛點,「我們要建構(gòu)有彈性的混合云系統(tǒng)?!雇蹶P(guān)勝表示,微博的新做法是,導(dǎo)入公有云并結(jié)合過去的私有云,集結(jié)各業(yè)務(wù)叢集多余的運算設(shè)施,構(gòu)建混合云的系統(tǒng)架構(gòu)。

他表示,混合云架構(gòu)除了妥善集成內(nèi)部硬體資源,解決內(nèi)部的彈型需求外,當系統(tǒng)面臨流量劇增的峰值事件,亦可以將過多的流量引導(dǎo)至外部公有云,減輕內(nèi)部系統(tǒng)的壓力。

王關(guān)勝分析了采用混合云作法的好處,他表示,內(nèi)部私有云具備安全性高、掌握度高的特性,也可以因應(yīng)內(nèi)部需求,對硬體配置進行優(yōu)化,適合處理固定的工作負載。而公有云的設(shè)備則具有標準化、自動化的特性,可以快速因應(yīng)臨時需求,在爆增流量的狀況下,讓企業(yè)具備水平擴充工作負載的能力。企業(yè)也可以利用公有云按照使用流量的付費機制,減低固定的營運成本,而采用混合云架構(gòu),可以兼具私有云以及公有云的優(yōu)點,「可以同時擁有安全性與彈性擴充能力」,使系統(tǒng)工作負載可以在叢集間進行遷移,讓低負載的叢集配置較少的設(shè)備,反之,負載高的叢集則必須準備足夠的設(shè)備。而將Docker導(dǎo)入混合云的架構(gòu),也使微博服務(wù)穩(wěn)定度高上許多。

透過三大關(guān)鍵,實現(xiàn)Docker混合云

微博混合云系統(tǒng)不單只是一般的混合云,而是導(dǎo)入了Docker,透過Docker Container快速部署的特性,解決爆量事件對微博系統(tǒng)帶來的壓力。過去企業(yè)在面對爆量事件,一般采取的作法是,首先評估需要多少額外設(shè)備,并向外部公有云申請機器分攤流量。然而,除了可能低估應(yīng)付爆量所需的設(shè)備外,即使事先準備了足夠的VM,其部署時間成本也遠高于Docker,無法即時幫助企業(yè)分攤過多外部請求。

而王關(guān)勝表示,微博Docker Container平臺的混合云核心設(shè)計思想,主要是借鏡銀行的運作機制。他表示,民眾可以把錢存在銀行,而需要使用金錢的時候,只需要提領(lǐng)一部分,剩余的存款銀行可以拿去進行投資。而微博則借鏡銀行的這一套運作模式,在內(nèi)部設(shè)立一個硬體資源共享池外,還導(dǎo)入了外部公有云。

而要微博實現(xiàn)高彈性調(diào)度資源的混合云架構(gòu),其中實現(xiàn)的關(guān)鍵則是Docker。王關(guān)勝表示,剛開始他們思考該要使用裸機還是VM架構(gòu),作為Docker Container的基礎(chǔ)設(shè)施。后來,考量如果要采用VM,內(nèi)部機房架構(gòu)要進行許多改造。所以,目前微博的內(nèi)部私有云使用裸機部署,而外部公有云則采用阿里云彈性計算服務(wù)(ECS)的VM架構(gòu)。

王關(guān)勝也揭露微博構(gòu)成Docker Container平臺基礎(chǔ)架構(gòu)的3大關(guān)鍵,包含Docker在裸機上的部署架構(gòu)、自主開發(fā)的Docker Registry以及網(wǎng)頁伺服器Nginx Upsync模塊。

***是Docker Container的裸機部署方案,透過IP位址以及Port定義一個唯一的Container服務(wù),而每臺伺服器上則可以開啟多個Container,各個具有不同的功能。

例如,每一個Container服務(wù)所產(chǎn)生的行為日志,會經(jīng)由一個名為Scribe的Container集中收集。而集中后的數(shù)據(jù)則可進行用戶行為分析。

此外,如果要進行Container的運作監(jiān)控,則是透過建立Cadvisor Container,將Container運行產(chǎn)生的資料,傳送至Elasticsearch、Logstash及Kibana這3種開源監(jiān)控軟體,進行分析?;蚴?,搭配開源測量工具Graphite,監(jiān)控系統(tǒng)的運作狀況。

第二則是Docker Registry,王關(guān)勝表示,微博使用Docker官方提供的Docker Registry,構(gòu)建了私有的映像檔儲存庫Registry Hub,并且透過這個映像檔儲存庫調(diào)度Docker Container需要的映像檔。

在今年,微博開發(fā)出了第2版本的Registry Hub,將儲存引擎改為使用分散式開源儲存平臺Ceph,并且在Docker Registry前端結(jié)合Nginx,實作負載平衡功能。王關(guān)勝表示,在升級過程中必須讓系統(tǒng)能夠兼容新舊版本的Registry Hub,而前端Nginx可以分析系統(tǒng)需求,辨別要從新版本或是舊版本映像檔儲存庫下載映像檔。

而外部公有云,微博則是透過映像檔快取,不必像私有云一樣,部署完整的映像檔儲存庫。微博位于阿里云映像檔快取架構(gòu),總共包含3層架構(gòu)。包含***層作業(yè)系統(tǒng)、中間層的運作環(huán)境如Java、 Tomcat,及最上層的Container。而在調(diào)度Container時,透過使用dockerignore指令,減少不必要的文件、目錄,借此減低映像檔的容量。在映像檔標簽命名上,微博則禁止使用「Latest」做為映像檔標簽。王關(guān)勝表示,由于不同使用者對于標簽的理解不一,可能會誤以為是代表映像檔***的版本。

而第三則是微博開發(fā)的Nginx Upsync模塊,王關(guān)勝表示,去年微博開始使用Container時,必須透過Container將Nginx掛載至前端,執(zhí)行負載平衡的任務(wù)。而 Nginx部署完成后,必須透過重啟reload指令重啟Nginx。王關(guān)勝發(fā)現(xiàn),Nginx對于特別大的流量會發(fā)生運作不穩(wěn)定的情形。所以微博也直接開發(fā)了Nginx Upsync模塊,不需要透過reload指令重啟,也可以保持系統(tǒng)穩(wěn)定運作。而微博也針對兩種模塊進行比較,發(fā)現(xiàn)流量大時,未修改的Nginx模塊會比 Nginx Upsync模塊多上10%的請求。

(圖片來源/王關(guān)勝)

目前微博開發(fā)的Docker Container平臺系統(tǒng),主要包含4層架構(gòu):主機層、調(diào)度層及排程層,最上層則是包含應(yīng)用程式的業(yè)務(wù)層。底層的混合云基礎(chǔ)架構(gòu)則架設(shè)了專線,打通微博內(nèi)部資料中心以及阿里云。

混合云系統(tǒng)設(shè)計核心:自動化、彈性調(diào)度

微博混合云系統(tǒng)的設(shè)計理念,總共包含4個核心概念:彈性伸縮、自動化、業(yè)務(wù)導(dǎo)向以及專門為微博訂制。王關(guān)勝表示,混合云系統(tǒng)必須有彈性調(diào)度的運算能力。而微博混合云系統(tǒng)并不是對外公開的產(chǎn)品化服務(wù),必須以業(yè)務(wù)需求出發(fā),因此會有包含許多微博自我訂制的功能。

目前微博開發(fā)的Docker Container平臺系統(tǒng),總共包含3層架構(gòu):主機層、調(diào)度層及排程層。王關(guān)勝解釋,主機層的核心是要調(diào)度運算資源。目前微博也設(shè)計了資源共享池、 Buffer資源池及多租戶管理機制,借此實現(xiàn)彈性調(diào)度資源。此外,底層的混合云基礎(chǔ)架構(gòu),也架設(shè)了專線,打通微博內(nèi)部資料中心以及阿里云。

而調(diào)度層則透過API,使用調(diào)度工具將API進行包裝,而微博4種常用的調(diào)度工具組合包含:Docker、Swarm、Mesos及微博自主開發(fā)的Dispatch。

而最上層的排程層則是負責(zé)負載平衡。目前,微博的后端服務(wù)全部是Java環(huán)境,而個人電腦端則是使用PHP撰寫,行動裝置端則是透過調(diào)度API。編排層也導(dǎo)入了大資料工具Hadoop,執(zhí)行大資料分析。

(圖片來源/王關(guān)勝)

當業(yè)務(wù)A多馀的運算資源導(dǎo)入混合云共享池時,此時爆量的業(yè)務(wù)C,可從共享池調(diào)度業(yè)務(wù)A的運算資源,而度過峰值事件后,便可以把多馀的運算資源歸還至共享池。

微博引入阿里云做為第3機房,實現(xiàn)彈性調(diào)度架構(gòu)

然而,王關(guān)勝也在思考,依照微博目前的技術(shù)框架,採用混合云的架構(gòu)是否可行。目前微博機房的部署架構(gòu)總共分為3層,依序是最上層域名以及負載均衡層。中間則是Web層,包含各種前端框架以及中介軟體(Middleware)。而最下層則包含MySQL、Redis、HBase等資料庫架構(gòu),而底部資源的中介軟體,則部署于中間Web層。

微博內(nèi)部總共有2個機房,兩者互相做為災(zāi)難備份用途,而第3個機房則採用外部阿里云。王關(guān)勝表示,混合云架構(gòu)總共有2種部署方桉。第1種部署方桉,將阿里云視為資料中心,底層架構(gòu)與微博內(nèi)部機房一樣部署Redis。內(nèi)部機房採用Linux虛擬伺服器,做為負載平衡層,但外部公有云則採用伺服器負載平衡SLB。而外部機房的中間Web層則與內(nèi)部機房架構(gòu)一致。不過,王關(guān)勝表示,由于微博有資料安全性的考慮,仍然把阿里云做為應(yīng)付大量峰值的備桉,儲存***性資料的MySQL、HBase資料庫架構(gòu)并不會部署于阿里云。

而第2種部署方式則不將阿里云視為完整資料中心,僅是把內(nèi)部機房應(yīng)付爆量事件需要的彈性計算能力,遷移到阿里云。王關(guān)勝表示,第2種部署方桉困難之處,需要把微博的內(nèi)部業(yè)務(wù)進行改造,讓微博中間Web層,直接對阿里云機房進行遠端程序呼叫。他表示,此種方桉部署結(jié)構(gòu)相較比較簡單,也讓混合云架構(gòu)具有實現(xiàn)可行性。

而這2種方桉都會仰賴VPC網(wǎng)路,王關(guān)勝表示,如果有沒有專線,想實現(xiàn)公有云的彈性計算能力幾乎是不可能。因為公網(wǎng)調(diào)度資源的延遲時間太高,無法應(yīng)付微博大量的業(yè)務(wù)。

因此,微博與跟阿里云合作,在兩邊建立了內(nèi)部專線,讓阿里云機房與微博的機房互通。最早微博機房跟阿里云建立一個1G專線,用于日常峰值,在春節(jié)則是透過10G的專線應(yīng)付。

但是后來微博發(fā)現(xiàn),如果只有一條專線,在峰值爆量的狀況下也很難彈性調(diào)度運算計算資源。因此微博也在另一個機房中,開啟了另一條專線。透過建立私有云及公有云間的專線,「目前微博已經(jīng)達到高可用性的目標。」王關(guān)勝表示。

三大步驟完成大規(guī)模叢集操作自動化

微博Docker Container平臺設(shè)計思維,核心目標就是透過自動化操作大規(guī)模叢集,進行彈性調(diào)度資源的任務(wù),要完成此任務(wù),必須經(jīng)過3個流程:設(shè)備申請、設(shè)備初始化及系統(tǒng)水平擴展。

王關(guān)勝表示,彈性擴充任務(wù)所需要的設(shè)備來源是內(nèi)部的叢集以及外部的阿里云。而申請到足夠設(shè)備后,也必須對伺服器進行初始化、架設(shè)環(huán)境及配置管理。***一步則是將伺服器上線,開始執(zhí)行Container調(diào)度以及彈性擴充的任務(wù)。

第 1步驟則是申請設(shè)備,而設(shè)備申請借鏡于銀行機制的概念。王關(guān)勝分析,私有云的設(shè)備來源,主要來自離線叢集、低負載叢集以及錯峰時間空出的多馀設(shè)備。他解釋,離線叢集并不是時時刻刻都在執(zhí)行運算,即使稍微減少硬體資源,也不會對業(yè)務(wù)產(chǎn)生重大影響,而工作負載較低的叢集,如果有多馀的資源也可以進行調(diào)度。此外,微博有上百個業(yè)務(wù)線,每個業(yè)務(wù)線峰值出現(xiàn)的時間點都不一樣,而在此種狀況下,各業(yè)務(wù)也可以互相支援,共享多馀的硬體資源。

而不同業(yè)務(wù)的叢集則各自獨立,并且具有獨立的資源池。叢集內(nèi)可以自由調(diào)度資源,例如,縮小A服務(wù)的規(guī)模,將多馀的運算資源分派給B服務(wù)。若叢集要調(diào)度外部資源,微博另外也有設(shè)計配額制度,控制每個叢集分配到的資源。在叢集外,必須看Buffer池是否有足夠的資源,如果足夠的話,可以直接將Buffer池內(nèi)的設(shè)備初始化,進行使用。

反之,如果Buffer池內(nèi)的資源不足,也必須查看是否有足夠的配額,可以直接申請機器。當設(shè)備申請完成,登入Buffer池后,隨即被納入混合云系統(tǒng)中,而調(diào)度硬體的程序也都會經(jīng)由Buffer池。

而正常運作的設(shè)備,會從未初始化狀態(tài),歷經(jīng)初始化、Container啟動以及Container上線等程序。不過,王關(guān)勝表示,設(shè)備異常的狀況也十分常見。如果設(shè)備異常就必須就要下線,如果重啟后運作正常,則可以重新回到Buffer池供人調(diào)度。但若出現(xiàn)硬體錯誤,則逕行走向報修程序。

第 2步驟則是設(shè)備初始化,王關(guān)勝表示,藉由DHCP機制,微博可以達到作業(yè)系統(tǒng)升級自動化、系統(tǒng)操作API化。而伺服器所依賴的基礎(chǔ)環(huán)境、需要的軟體等環(huán)境配置,透過組態(tài)管理工具Puppet,將需要的配置撰寫在模組中,完成組態(tài)自動化設(shè)定,并使用RPM機制打包,進行安裝。

在初始化流程中,必須要支援軟體反安裝模式,例如,當A業(yè)務(wù)單位要調(diào)度設(shè)備時,其他單位在交付設(shè)備前,必須要先透過反安裝程序,將要設(shè)備恢復(fù)為最原始的狀態(tài)。

而目前業(yè)界中的一些做法也可以免去初始化的流程。例如導(dǎo)入為Container而生的作業(yè)系統(tǒng),像是CoreOS、RancherOS或Red Hat Atomic。不過,王關(guān)勝表示,雖然此種做法的可維護性高,但是缺點在于遷移設(shè)備的成本較高。

第 3步驟則是利用完成初始化的設(shè)備,開始進行服務(wù)水平擴充。王關(guān)勝表示,目前***線的作業(yè)人員,只要在系統(tǒng)頁面上輸入服務(wù)池名稱、服務(wù)類型、 Container類型、需要Container數(shù)量以及映像檔位址等參數(shù),而在水平擴充完成后,系統(tǒng)也會產(chǎn)出完整的報告,列出擴充程序中,執(zhí)行的事項,以及每件任務(wù)的成功、失敗狀況。

導(dǎo)入Docker混合云,不怕爆量事件

為了確保微博 Docker混合云平臺系統(tǒng)的高可用性,微博也成立了技術(shù)保障團隊。王關(guān)勝表示,技術(shù)保障團隊最重要的任務(wù),就是要保障產(chǎn)品的穩(wěn)定性,讓系統(tǒng)在三節(jié)、紅包飛等尖峰時段系統(tǒng)運作無誤。王關(guān)勝表示,微博會優(yōu)先調(diào)度內(nèi)部的共享池資源的運算資源。而儲存節(jié)點、***性資料放在微博內(nèi)部,確保資料的安全性。但是在紅包飛、春晚時,則必須調(diào)度外部的運算資源。平日的正常狀況下,阿里云只需提供1,000個運算節(jié)點,并且在5到10分鐘內(nèi)完成部署任務(wù)。但是,面對春晚、紅包飛的爆增流量,則要提供3,000個節(jié)點。王關(guān)勝表示,這種與阿里云租借公有云的做法,只需要應(yīng)付臨時的爆增峰值事件,因此,也可以大大降低微博的日常運作成本。

目前微博的Docker混合云系統(tǒng),才在今年10月完成,開始啟用不滿3個月,開啟的Container數(shù)量約是3,000 個。不過,王關(guān)勝表示,在今年的雙11,微博也用此系統(tǒng)進行實地演練,也達成微博所設(shè)定每次水平擴充時間低于5分鐘的目標,并完成一日內(nèi)10次的水平擴展的任務(wù)?!赣羞@樣的彈性調(diào)度能力時,系統(tǒng)面對大型活動的峰值壓力就小很多?!雇蹶P(guān)勝表示。

(圖片來源/iThome)


文章題目:微博Docker化混合云平臺設(shè)計首度揭秘!
轉(zhuǎn)載來源:http://m.5511xx.com/article/ccdespe.html