乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      王寶強(qiáng)離婚事件的洪荒之力,新浪微博怎樣靠技術(shù)支撐?

       melon1024 2016-09-03

      在剛過(guò)去的8月,奧運(yùn)會(huì)、王寶強(qiáng)事件交織發(fā)酵下,新浪微博流量大增,甚至部分服務(wù)被短暫打死。這股網(wǎng)民合聚的洪荒之力下,新浪微博是怎樣用技術(shù)支撐起業(yè)務(wù)的?
      老司機(jī)簡(jiǎn)介

      王關(guān)勝,現(xiàn)任微博產(chǎn)品資深運(yùn)維架構(gòu)師,負(fù)責(zé)微博平臺(tái)的技術(shù)保障工作,7年大并發(fā)高可用分布式系統(tǒng)運(yùn)維經(jīng)驗(yàn),對(duì)整個(gè)運(yùn)維體系,技術(shù)保障方面研究比較深入,尤其是自動(dòng)化運(yùn)維方面。2014年起專注于DevOps、Container領(lǐng)域,推進(jìn)Docker在微博平臺(tái)的落地,并基于公有云構(gòu)建混合云系統(tǒng),具備分鐘級(jí)彈性擴(kuò)容千節(jié)點(diǎn)能力。

      前言

      8月14日凌晨時(shí)分,演員王寶強(qiáng)突然在微博上發(fā)出離婚聲明,直指妻子馬蓉出軌經(jīng)紀(jì)人,并宣布解除與馬蓉的婚姻關(guān)系。該消息發(fā)出后,迅速成為熱點(diǎn)話題,在微博上炸開(kāi)了鍋。據(jù)小道消息稱,在這次的熱點(diǎn)事件中,微博流量相較于往常的熱點(diǎn),增長(zhǎng)了數(shù)倍,甚至在話題高峰期,有部分服務(wù)被短暫打死。

      之前微博曾披露過(guò)他們已經(jīng)遷移到基于Docker容器的混合云平臺(tái)DCP,那對(duì)于這樣的突發(fā)熱點(diǎn),DCP是如何應(yīng)對(duì)的?Docker容器可以進(jìn)行秒級(jí)擴(kuò)容,那為什么還會(huì)有短暫的服務(wù)被打死情況發(fā)生?DCP整個(gè)的彈性伸縮流程是怎么樣的?帶著這些問(wèn)題,InfoQ記者采訪了微博Container平臺(tái)彈性伸縮負(fù)責(zé)人王關(guān)勝。

      奧運(yùn)期間熱點(diǎn)事件對(duì)微博服務(wù)的沖擊

      奧運(yùn)期間因?yàn)橥鯇殢?qiáng)的離婚事件,讓微博的流量大增,甚至部分服務(wù)被短暫打死。詳細(xì)情況是怎樣的?

      王關(guān)勝:自16年里約奧運(yùn)會(huì)開(kāi)幕式開(kāi)始,微博整體流量增幅明顯,相較于往常增長(zhǎng)數(shù)倍,造成了白天跟日常晚高峰一樣的持續(xù)峰值場(chǎng)景。更甚的是,奧運(yùn)期間還有賽事的熱點(diǎn)及明星事件的沖擊,給微博平臺(tái)的服務(wù)帶來(lái)數(shù)倍于日常峰值的流量請(qǐng)求。

      其中在孫楊PK霍頓、奧運(yùn)網(wǎng)紅傅園慧的“洪荒之力”、王寶強(qiáng)事件、女排奪冠等熱點(diǎn)中,尤以寶強(qiáng)事件的影響最為巨大。大家可以去看一下寶強(qiáng)發(fā)布離婚聲明的微博互動(dòng)數(shù)據(jù),非常驚人;再來(lái)看看流量數(shù)據(jù):

      圖1:微博,評(píng)論及Feed業(yè)務(wù)量

      圖2:話題業(yè)務(wù)量

      可以看到,這次事件對(duì)微博的核心服務(wù)如Feed、評(píng)論、話題等帶來(lái)的壓力都是成倍的,已經(jīng)超過(guò)16年春晚,為歷史新高點(diǎn)。仔細(xì)分析一下,可以發(fā)現(xiàn)這種事件基本可以分為:發(fā)生期、發(fā)酵期、暴漲期、緩解期。

      而暴漲期一般都是內(nèi)部運(yùn)營(yíng)部門的push引來(lái)爆點(diǎn),此時(shí)對(duì)于服務(wù)的容量冗余要求極高,雖然DCP已經(jīng)彈性擴(kuò)容了大批Container,但Java的服務(wù)初啟動(dòng),會(huì)有線程池及連接資源預(yù)熱的過(guò)程,此時(shí)會(huì)有一點(diǎn)慢的現(xiàn)象,也可以理解為瞬時(shí)流量短暫打死。

      微博目前用戶基數(shù)龐大,DAU和MAU均為數(shù)億。從整個(gè)技術(shù)體系來(lái)看,微博核心總體分為端和后端平臺(tái),端上主要是PC端,移動(dòng)端,開(kāi)放平臺(tái)以及企業(yè)開(kāi)放平臺(tái)。后端平臺(tái)主要是Java編寫的各種接口層、服務(wù)層、中間件層及存儲(chǔ)層。除此之外,微博搜索、推薦、廣告、大數(shù)據(jù)平臺(tái)也是非常核心的產(chǎn)品。從業(yè)務(wù)角度看,整體架構(gòu)圖如下:


      我們團(tuán)隊(duì)主要負(fù)責(zé)的微博平臺(tái)的業(yè)務(wù)與保障,平臺(tái)在2015年的部署架構(gòu)如下:


      就平臺(tái)前端來(lái)說(shuō),每日超過(guò)千億次的API調(diào)用、超過(guò)萬(wàn)億的RPC調(diào)用,產(chǎn)生的日志就達(dá)百T 。對(duì)于這么大體量的業(yè)務(wù)系統(tǒng),對(duì)于運(yùn)維的要求也很嚴(yán)格;就接口層來(lái)說(shuō),SLA必須達(dá)到4個(gè)9,且接口平均響應(yīng)時(shí)間不能高于50ms。因此我們會(huì)面臨各種各樣的挑戰(zhàn)。

      如何應(yīng)對(duì)這種突發(fā)情況?

      當(dāng)時(shí)面對(duì)這樣的突發(fā)情況,新浪微博是如何應(yīng)對(duì)的?有哪些是沒(méi)有考慮的的情況?

      王關(guān)勝:微博對(duì)于服務(wù)的穩(wěn)定性要求很高,在奧運(yùn)開(kāi)始前,微博平臺(tái)已經(jīng)啟動(dòng)了線上服務(wù)保障相關(guān)的準(zhǔn)備工作,也建立了奧運(yùn)期間的早晚班值班機(jī)制,以防止突發(fā)情況出現(xiàn)。在日常的峰值場(chǎng)景中,微博的混合云DCP平臺(tái)可以做到無(wú)人值守的進(jìn)行服務(wù)的彈性伸縮。

      從熱點(diǎn)事件的業(yè)務(wù)流量圖可以看出:到達(dá)爆點(diǎn)之前一般會(huì)有發(fā)酵期,而我們的容量決策系統(tǒng)會(huì)實(shí)時(shí)的監(jiān)測(cè)業(yè)務(wù)量變化,根據(jù)服務(wù)冗余情況決定是否自動(dòng)伸縮,再根據(jù)一定的配比去彈性擴(kuò)容,

      縮容。當(dāng)寶強(qiáng)事件爆點(diǎn)出來(lái)時(shí),DCP已經(jīng)提前擴(kuò)容了一批業(yè)務(wù)container,但是讓我們沒(méi)想到的是業(yè)務(wù)量來(lái)的是如此之快,如此之高,加上瞬間的流量請(qǐng)求對(duì)于后端資源的預(yù)熱,需要一點(diǎn)時(shí)間,部分服務(wù)出現(xiàn)短暫的超時(shí),我們迅速對(duì)于非核心功能啟動(dòng)了無(wú)損降級(jí),服務(wù)很快恢復(fù)。

      當(dāng)然,在應(yīng)對(duì)這種熱點(diǎn)事件時(shí),我們已經(jīng)很嫻熟了,都會(huì)準(zhǔn)備很多的預(yù)案,比如降級(jí)、限流、切流量等干預(yù)手段。

      基于Docker的混合云平臺(tái)DCP優(yōu)勢(shì)在哪?

      王關(guān)勝:微博平臺(tái)大概14年開(kāi)始研究Docker,14年底就Docker化了一些服務(wù),并基于內(nèi)部的基礎(chǔ)設(shè)施上線了第一版的Docker工具平臺(tái),在15年春晚也發(fā)揮了作用。

      但是這版的工具平臺(tái)有很大的限制:我們內(nèi)網(wǎng)的物理機(jī)設(shè)備冗余比較少,自動(dòng)擴(kuò)容的能力有限。基于此,我們開(kāi)始探索公有云,并于2015年基于公有云的彈性能力加上私有云一起構(gòu)建混合云DCP。通過(guò)與阿里云的合作,微博實(shí)現(xiàn)了從提前部署擴(kuò)容到實(shí)時(shí)擴(kuò)容的升級(jí),并能達(dá)到10分鐘彈性擴(kuò)容上千節(jié)點(diǎn)的能力。

      如果要說(shuō)DCP的優(yōu)勢(shì)的話,我覺(jué)得最核心的就兩點(diǎn):

      首先,微博平臺(tái)的業(yè)務(wù)已經(jīng)完全Docker化,基于Docker的特性,解決了環(huán)境差異性問(wèn)題,使得標(biāo)準(zhǔn)化變得容易。其次,基于公有云,使得我們的服務(wù)的彈性能力大大加強(qiáng),再也不用提前購(gòu)買服務(wù)器,進(jìn)行漫長(zhǎng)的部署過(guò)程了。

      DCP的核心設(shè)計(jì)思路

      王關(guān)勝:微博混合云平臺(tái)DCP的核心設(shè)計(jì)思想,主要是借鑒銀行的運(yùn)作機(jī)制,在內(nèi)部設(shè)立一個(gè)計(jì)算資源共享池外,既然內(nèi)部私有云的需求,又引入了外部公有云,使其在設(shè)備資源的彈性能力大大提升。

      而要微博實(shí)現(xiàn)高彈性調(diào)度資源的混合云架構(gòu),其中實(shí)現(xiàn)的關(guān)鍵則是Docker。剛開(kāi)始我們思考該使用裸機(jī)還是VM架構(gòu),發(fā)現(xiàn)如果要采用VM,內(nèi)部機(jī)房架構(gòu)要進(jìn)行許多改造,這樣成本會(huì)更高。

      所以,目前微博的內(nèi)部私有云使用裸機(jī)部署,而外部公有云則采用阿里云彈性計(jì)算服務(wù)(ECS)的VM架構(gòu)。等平臺(tái)建設(shè)成熟后,還可以應(yīng)用其他家的公有云,如AWS,在主機(jī)之上均采用Docker來(lái)持續(xù)部署。

      目前我們開(kāi)發(fā)的DCP平臺(tái),主要包含4層架構(gòu):主機(jī)層、調(diào)度層及業(yè)務(wù)編排層,最上層則是各業(yè)務(wù)方系統(tǒng)。底層的混合云基礎(chǔ)架構(gòu)則架Dispatch設(shè)了專線,打通微博內(nèi)部私有云以及阿里云。

      主要思想:三駕馬車(Machine Swarm Compose)

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

      DCP系統(tǒng)最核心的3層架構(gòu):主機(jī)層、調(diào)度適配層及編排層:

      1) 主機(jī)層

      主機(jī)層的核心是要調(diào)度運(yùn)算資源。目前設(shè)計(jì)了資源共享池、Buffer資源池,配額管理,及多租戶管理機(jī)制,借此實(shí)現(xiàn)彈性調(diào)度資源。

      2)調(diào)度層:

      而調(diào)度層則通過(guò)API,把調(diào)度工具用API進(jìn)行包裝,而微博4種常用的調(diào)度工具組合包含:原生Docker、Swarm、Mesos及微博自主開(kāi)發(fā)的Dispatch。

      最上層的則是負(fù)責(zé)業(yè)務(wù)編排及服務(wù)發(fā)現(xiàn)。目前,微博的后端服務(wù)95%是Java環(huán)境,而PC端則是使用PHP編寫,移動(dòng)端則是通過(guò)調(diào)用API服務(wù)。這些業(yè)務(wù)方都將會(huì)接入DCP。編排層也包括了大數(shù)據(jù)工具Hadoop,進(jìn)行大數(shù)據(jù)分析的業(yè)務(wù)場(chǎng)景。

      我們知道,對(duì)于調(diào)度來(lái)說(shuō),最重要的就是資源管理,Mesos處理這個(gè)是最合適不過(guò)了,很多公司就專用其做資源管理,比如Netflix寫了一個(gè)Titan的調(diào)度服務(wù),其底層資源管理則是通過(guò)Mesos。當(dāng)然我們的調(diào)度組件中,使用最多的還是Swarm、Dispatch.

      我們可以看下面這個(gè)場(chǎng)景:這也是私有云內(nèi)部資源流轉(zhuǎn)的最佳實(shí)踐:

      當(dāng)業(yè)務(wù)A多余的運(yùn)算資源導(dǎo)入混合云共享池時(shí),此時(shí)流量暴漲的業(yè)務(wù)C,可從共享池調(diào)度業(yè)務(wù)A的運(yùn)算資源;峰值事件后,便可以把多余的運(yùn)算資源歸還至共享池。

      3)業(yè)務(wù)編排層

      這層主要根據(jù)業(yè)務(wù)場(chǎng)景模型,通過(guò)主機(jī)層、調(diào)度層的API,創(chuàng)建可編排的任務(wù)模型,如集群管理、服務(wù)管理、服務(wù)池管理、鏡像管理、構(gòu)建管理、負(fù)載均衡管理、擴(kuò)縮容管理等。

      從使用角度出發(fā),我們主要?jiǎng)澐至思骸⒎?wù)池、設(shè)備Buffer等層次,以IP Port唯一標(biāo)識(shí)服務(wù)。如下圖:

      其中:在DCP下可以創(chuàng)建多個(gè)集群,每個(gè)集群為獨(dú)立平臺(tái)或產(chǎn)品線,如微博平臺(tái)、紅包飛、手機(jī)微博等。集群間相互獨(dú)立,集群內(nèi)各自的服務(wù)可自由調(diào)度,集群外的調(diào)度則設(shè)置了配額機(jī)制。在集群下,可以創(chuàng)建服務(wù)池,一般為同一業(yè)務(wù)的同構(gòu)服務(wù)。主機(jī)只有進(jìn)了集群的Buffer中,才可能被用來(lái)部署服務(wù)。

      DCP對(duì)于物理主機(jī)的流轉(zhuǎn),基于資源共享池、Buffer資源池、配額管理,及多租戶管理機(jī)制,還是非常復(fù)雜的,這里我們可以看一下一臺(tái)物理主機(jī)的生命周期(狀態(tài)流轉(zhuǎn)圖)

      DCP的彈性伸縮流程

      王關(guān)勝:DCP系統(tǒng)最核心的是彈性伸縮,能根據(jù)容量情況進(jìn)行自動(dòng)的彈性伸縮,以此來(lái)解決明顯的早晚高峰及熱點(diǎn)事件的峰值問(wèn)題。 

      DCP第一版時(shí),我們做到了擴(kuò)縮容的自動(dòng)化,但未能自動(dòng)伸縮,需要人的參與,而且也會(huì)有幾個(gè)操作步驟,人本身是懶惰的且是易犯錯(cuò)的,且還會(huì)存在人力成本,這還沒(méi)達(dá)到我們的目標(biāo),離無(wú)人值守還差一段距離,于是,我們又開(kāi)發(fā)了兩個(gè)模塊:

      • 容量決策系統(tǒng):可以每周在線壓測(cè)服務(wù),評(píng)估出每個(gè)服務(wù)的容量數(shù)據(jù),以供決策;

      • 調(diào)度框架:在任務(wù)之上,采用基于時(shí)間段的調(diào)度策略,在業(yè)務(wù)訪問(wèn)低峰時(shí)執(zhí)行縮容策略, 高峰來(lái)臨前執(zhí)行擴(kuò)容策略。

      整個(gè)自動(dòng)伸縮框架如下:


      其核心的特性:如支持各種調(diào)度策略,根據(jù)業(yè)務(wù)流量及服務(wù)冗余情況,提供基于時(shí)間的調(diào)度方式,類似crontab觸發(fā)機(jī)制,Chronos、 Quartz提供可借鑒的任務(wù)調(diào)度實(shí)現(xiàn)機(jī)制;支持服務(wù)的依賴,A服務(wù)依賴B,B在自動(dòng)彈性擴(kuò)容時(shí),需擴(kuò)容好服務(wù)B。

      這樣,整個(gè)服務(wù)就可以彈性伸縮了。

      哪些環(huán)節(jié)需要人工參與?

      王關(guān)勝:目前微博混合云DCP平臺(tái)包含很多核心功能,如服務(wù)管理、多云對(duì)接、鏡像市場(chǎng)、彈性調(diào)度、彈性擴(kuò)縮容、服務(wù)發(fā)現(xiàn)、監(jiān)控、容量決策等,這些已經(jīng)可以全部聯(lián)動(dòng),自動(dòng)的去彈性來(lái)做。而應(yīng)對(duì)峰值事件時(shí),對(duì)于準(zhǔn)備的預(yù)案,如降級(jí),切流量這些,還需要人工的參與。

      面對(duì)瞬間高壓,怎樣做降級(jí)?

      一般而言,面對(duì)瞬間高壓,系統(tǒng)會(huì)采用“降級(jí)非核心及周邊業(yè)務(wù)”。那么微博有沒(méi)有對(duì)哪些業(yè)務(wù)進(jìn)行降級(jí)呢?在突發(fā)熱點(diǎn)事件的這種情況下,“核心應(yīng)用”和“周邊業(yè)務(wù)”分別是哪些?微博是否準(zhǔn)備的降級(jí)策略?

      王關(guān)勝:首先介紹一下微博的架構(gòu),微博主要分為后端和前端;前端主要是各種端(PC端和移動(dòng)端)以及內(nèi)部第三方(搜索、推薦、廣告等),而后端則是提供各種各樣的API,即所謂的微博平臺(tái),大部分的業(yè)務(wù)邏輯及存儲(chǔ)資源均在后端部署。

      在面對(duì)瞬時(shí)高壓時(shí),由于調(diào)用鏈比較深,當(dāng)某些依賴業(yè)務(wù)容量不足時(shí),也可能會(huì)采取降級(jí)非核心的功能以保證核心服務(wù)的正常。像王寶強(qiáng)事件時(shí),也做過(guò)針對(duì)非核心的無(wú)損降級(jí)。

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多