99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
首頁(yè)精彩閱讀2億QQ用戶大調(diào)度背后的架構(gòu)設(shè)計(jì)和高效運(yùn)營(yíng)
2億QQ用戶大調(diào)度背后的架構(gòu)設(shè)計(jì)和高效運(yùn)營(yíng)
2016-01-26
收藏

文 | 周小軍
來(lái)源 | 高效運(yùn)維
摘要: 作者介紹周小軍騰訊高級(jí)運(yùn)維工程師,目前在騰訊社交負(fù)責(zé)社交業(yè)務(wù)海量NoSQL集群運(yùn)維和團(tuán)隊(duì)管理。曾在天涯社區(qū)任運(yùn)維副總監(jiān)。對(duì)互聯(lián)網(wǎng)網(wǎng)站架構(gòu)、數(shù)據(jù)中心、云計(jì)算及自動(dòng)化運(yùn)維等領(lǐng)域有深入研究和理解,積累了十多年的經(jīng)驗(yàn)
作者介紹

周小軍
騰訊高級(jí)運(yùn)維工程師,目前在騰訊社交負(fù)責(zé)社交業(yè)務(wù)海量NoSQL集群運(yùn)維和團(tuán)隊(duì)管理。曾在天涯社區(qū)任運(yùn)維副總監(jiān)。對(duì)互聯(lián)網(wǎng)網(wǎng)站架構(gòu)、數(shù)據(jù)中心、云計(jì)算及自動(dòng)化運(yùn)維等領(lǐng)域有深入研究和理解,積累了十多年的IT運(yùn)維管理經(jīng)驗(yàn)。希望窮盡一生來(lái)深入鉆研運(yùn)維領(lǐng)域。
上篇全網(wǎng)大調(diào)
8月12日23點(diǎn)30分,天津市濱海新區(qū)貨柜碼頭發(fā)生集裝箱連串爆炸。
占地8萬(wàn)平方米,服務(wù)器超過(guò)20萬(wàn)臺(tái)的騰訊天津數(shù)據(jù)中心是騰訊在亞洲最大的數(shù)據(jù)中心,危險(xiǎn)品倉(cāng)庫(kù)爆炸時(shí),數(shù)據(jù)中心距離爆炸點(diǎn)僅僅1.5公里。
情況十分危急!數(shù)據(jù)中心隨時(shí)有可能被迫停止運(yùn)營(yíng)!
事件發(fā)生后,第一時(shí)間排查了損傷,發(fā)現(xiàn)損傷包括冷機(jī)系統(tǒng)宕機(jī),冷凍水管爆管,地下水發(fā)生嚴(yán)重水浸等問(wèn)題,加之爆炸之后各種信息不明朗…
2億QQ用戶可能深受影響!這甚至影響很多公司的業(yè)務(wù),因?yàn)镼Q早已不是簡(jiǎn)單的聊天工具,而是商務(wù)洽談之必備!
天津數(shù)據(jù)中心內(nèi)含騰訊社交核心業(yè)務(wù),包括QQ、空間、相冊(cè)及音樂(lè)等業(yè)務(wù)。社交核心業(yè)務(wù)主要按深圳、天津和上海三地來(lái)分布部署,各支撐中國(guó)三大區(qū)域的用戶訪問(wèn)。
其中天津數(shù)據(jù)中心是核心機(jī)房之一,承載我國(guó)北方所有用戶流量,高峰期在線用戶超過(guò)1億。如果天津數(shù)據(jù)中心停運(yùn),將有30%以上的QQ用戶服務(wù)受到影響。

所幸的事,類似于谷歌擁有的全球業(yè)務(wù)調(diào)配能力,騰訊社交網(wǎng)絡(luò)經(jīng)過(guò)長(zhǎng)期的建設(shè)積累,具備了數(shù)據(jù)和業(yè)務(wù)在全國(guó)范圍的云數(shù)據(jù)中心中轉(zhuǎn)換遷移的能力。
經(jīng)過(guò)24小時(shí)的技術(shù)應(yīng)急大調(diào)度,QQ用戶服務(wù)最終無(wú)感知地在線遷移到深圳和上海,完成中國(guó)互聯(lián)網(wǎng)史上最大規(guī)模的用戶調(diào)度。
在如此嚴(yán)峻的情況下,QQ運(yùn)營(yíng)繼續(xù)保持全年4個(gè)9的可持續(xù)服務(wù)能力。
下面先簡(jiǎn)單介紹一下調(diào)度過(guò)程。
1、啟動(dòng)
社交核心業(yè)務(wù)的三地部署各具有一定的容量冗余,能保證一地災(zāi)難性故障時(shí)其他二地能支撐所有用戶。
事件發(fā)生后,社交運(yùn)營(yíng)團(tuán)隊(duì)立即啟動(dòng)重大故障處理流程,成立突發(fā)事件應(yīng)急團(tuán)隊(duì),啟用調(diào)度應(yīng)急預(yù)案,做好天津用戶調(diào)度回深圳和上海的準(zhǔn)備:
應(yīng)急團(tuán)隊(duì)按業(yè)務(wù)分配主、備負(fù)責(zé)人配合業(yè)務(wù)線來(lái)跟進(jìn)實(shí)施,接入、邏輯和數(shù)據(jù)三個(gè)架構(gòu)層各安排主備負(fù)責(zé)人協(xié)調(diào)。
由故障值班工程師負(fù)責(zé)在應(yīng)急團(tuán)隊(duì)中協(xié)調(diào)和溝通。
最上層由大事件經(jīng)理將匯總信息和實(shí)施過(guò)程實(shí)時(shí)同步給總監(jiān)、業(yè)務(wù)、運(yùn)維和QA等工作群組。
2、調(diào)度
13日?qǐng)F(tuán)隊(duì)開(kāi)始以每千萬(wàn)為粒度將在線用戶調(diào)度回深圳。
晚上22時(shí)是QQ在線用戶峰值時(shí)間段,深圳一些服務(wù)模塊的容量上漲到80%的水位,應(yīng)急團(tuán)隊(duì)利用資源池里的服務(wù)器資源,邊調(diào)度邊擴(kuò)容模塊容量,把水位下調(diào)到可控范圍之內(nèi)。
對(duì)于沒(méi)有資源擴(kuò)容的模塊,團(tuán)隊(duì)采用服務(wù)柔性的方式順利過(guò)渡。如QQ采取的柔性為取消一些非關(guān)鍵服務(wù):
如不加載聯(lián)系人備注,不讀取QQ漫游消息等。
通過(guò)在線擴(kuò)容、服務(wù)柔性等策略,在線高峰期間用戶訪問(wèn)核心服務(wù)順暢,順利地度過(guò)了流量洪峰,用戶無(wú)感知。
下圖為手機(jī)QQ天津地區(qū)在線用戶曲線圖:

上圖可以觀察到從13號(hào)晚上到14號(hào)凌晨,天津在線用戶降到0的曲線下降趨勢(shì);以及14號(hào)下午回遷60%天津用戶后的曲線上升。
整個(gè)過(guò)程不是僅僅從天津遷出到回遷這么簡(jiǎn)單,具體是這樣的:
14日凌晨1時(shí)30分,天津所有用戶全部調(diào)度、遷出完畢。
調(diào)度成功結(jié)束,此時(shí)天津數(shù)據(jù)中心在線用戶數(shù)已為零。
14日上午,天津數(shù)據(jù)中心運(yùn)維團(tuán)隊(duì)知會(huì)天津數(shù)據(jù)中心暫時(shí)可以穩(wěn)定運(yùn)營(yíng)。
應(yīng)急團(tuán)隊(duì)于是主動(dòng)將深圳的1千萬(wàn)在線用戶調(diào)度回天津,以緩解深圳數(shù)據(jù)中心的內(nèi)網(wǎng)傳輸壓力,并關(guān)閉之前開(kāi)啟的服務(wù)柔性開(kāi)關(guān),恢復(fù)全功能服務(wù)。
14日中午,天津數(shù)據(jù)中心預(yù)警解除,現(xiàn)場(chǎng)可控。
應(yīng)急團(tuán)隊(duì)將大部分在線用戶調(diào)度回天津,使得天津在線用戶恢復(fù)到4千萬(wàn)的容量。
20日,天津爆炸現(xiàn)場(chǎng)解控,數(shù)據(jù)中心幾處受損得到全部修復(fù),基礎(chǔ)設(shè)施恢復(fù)正常,警報(bào)解除。
應(yīng)急團(tuán)隊(duì)將北方用戶全部調(diào)度回天津,天津恢復(fù)回812之前的流量水平。
調(diào)度的幾點(diǎn)挑戰(zhàn)
QQ 2億多在線峰值用戶要實(shí)時(shí)全網(wǎng)調(diào)度,所面臨的挑戰(zhàn)是非常大的,主要有:
用戶如何在體驗(yàn)無(wú)損的情況下調(diào)度到異地?
數(shù)據(jù)中心三地分布,用戶在三地之間以秒間調(diào)度,必須保證不掉線、不丟數(shù)據(jù),用戶完全感知不到異地切換。因此必須要保證狀態(tài)、消息、數(shù)據(jù)等做到三地的一致。
用戶的狀態(tài)數(shù)據(jù)、消息如何保證不丟失?
用戶有各類狀態(tài),如在線、隱身、忙碌等,必須要實(shí)時(shí)同步到三地?cái)?shù)據(jù)中心;用戶消息包括C2C消息、群消息、離線消息等,要解決用戶切換時(shí)消息不丟失的挑戰(zhàn)。
用戶的數(shù)據(jù)如何做到幾地的全量一致性同步?
這里要解決以下問(wèn)題,包括如何保證同步的可靠性、實(shí)時(shí)性;如何支撐大流量高效分發(fā)和靈活伸縮;如何應(yīng)對(duì)頻發(fā)網(wǎng)絡(luò)抖動(dòng)和異地專線延時(shí);如何支持多地區(qū)互聯(lián)和區(qū)域自治。
異地的服務(wù)容量(包括服務(wù)器容量、模塊容量、業(yè)務(wù)容量和IDC容量等)能否支撐大量用戶請(qǐng)求的涌入,異地容量不能支撐時(shí)如何處理用戶請(qǐng)求?
容量峰值后如何快速縮容?
調(diào)度能做到多快,分鐘級(jí)、小時(shí)級(jí)還是天級(jí)?
調(diào)度速度越快就越能具備快速反應(yīng)能力,而目前QQ已經(jīng)做到秒級(jí)的調(diào)度能力。
運(yùn)營(yíng)是否具備自動(dòng)化的調(diào)度能力?
調(diào)度必須是一鍵式全自動(dòng)化,一個(gè)工程師就能輕易實(shí)現(xiàn)全局的調(diào)度能力。
以上任何一個(gè)挑戰(zhàn)解決不了的話,都必將影響調(diào)度的實(shí)現(xiàn)。
在下篇將講述,我們是如何應(yīng)對(duì)這些挑戰(zhàn)的。本次億級(jí)用戶遷移背后的技術(shù)架構(gòu)和運(yùn)營(yíng),其中用到的核心技術(shù)是SET,本文先和大家做個(gè)預(yù)熱。
關(guān)于 SET
SET,就像標(biāo)準(zhǔn)化的集裝箱,是一個(gè)標(biāo)準(zhǔn)化的服務(wù)模塊集群。它把原錯(cuò)綜復(fù)雜的服務(wù)器內(nèi)連接關(guān)系和功能耦合模糊掉,變成運(yùn)營(yíng)層面看到的一個(gè)個(gè)業(yè)務(wù)部署模塊。
騰訊社交業(yè)務(wù)以SET的方式部署服務(wù),每個(gè)SET集合了一個(gè)或一組服務(wù)模塊,通過(guò)接口對(duì)外提供調(diào)用服務(wù)。SET對(duì)外輸出二種容量:
一個(gè)從業(yè)務(wù)層面來(lái)看到的量,即一組服務(wù)器的處理能力,處理能力有兩個(gè)量來(lái)描述,PCU容量(萬(wàn)人/在線)和存儲(chǔ)容量(GB);
另一個(gè)層面則直接來(lái)自于成本層面,即這一組服務(wù)器有多少臺(tái)服務(wù)器和外/內(nèi)網(wǎng)帶寬。
SET間是無(wú)狀態(tài)的,通過(guò)SET可以實(shí)現(xiàn)橫向擴(kuò)容能力。也就是說(shuō)這些業(yè)務(wù)都支持部署最小化,當(dāng)有需要時(shí),可以不斷增加SET數(shù)量來(lái)支持業(yè)務(wù)的流量,且SET之間無(wú)差異。
下篇大調(diào)度背后的技術(shù)架構(gòu)
1、多地分布和異地容災(zāi)能力
QQ及業(yè)務(wù)服務(wù)以SET的標(biāo)準(zhǔn)化方式部署,以在線容量為標(biāo)準(zhǔn)劃分SET,采用無(wú)熱點(diǎn)的分布式部署,做法是把QQ號(hào)碼通過(guò)基于unit的一致性分布算法劃分成不同的Shard。
QQ SET內(nèi)各層模塊解耦,100多個(gè)核心模塊分成接入中心、消息中心、狀態(tài)中心和同步中心4個(gè)中心。中心內(nèi)的模塊根據(jù)物理分布情況靈活組合成流量?jī)?nèi)聚、號(hào)碼無(wú)關(guān)、僅跟在線容量相關(guān)的集群。架構(gòu)可以按照在線需求靈活擴(kuò)容和伸縮,優(yōu)化使用專線,實(shí)現(xiàn)異地分布。
以此為基礎(chǔ),QQ核心服務(wù)做了三地分布(深圳、天津和上海),單一地區(qū)服務(wù)故障時(shí)核心服務(wù)可迅速調(diào)度到另二個(gè)區(qū)域。

圖:QQ三地分布架構(gòu)圖
QQ空間、音樂(lè)、相冊(cè)等業(yè)務(wù)以三層標(biāo)準(zhǔn)架構(gòu)的SET方式部署。QQ空間按照訪問(wèn)來(lái)源和功能的不同將SET劃分為PC接入SET(Aset)、手機(jī)接入SET(Wset)和數(shù)據(jù)SET(Iset)。
這3類SET在設(shè)計(jì)架構(gòu)時(shí),就已經(jīng)融入了三地分布(深圳、天津、上海)的容災(zāi)理念,通過(guò)GSLB和移動(dòng)聯(lián)通服務(wù),將來(lái)源不同的用戶分別均攤到三地,每地分布的SET都能提供空間最核心的社交服務(wù)處理能力。

圖:QQ空間三地分布架構(gòu)圖
跨地域SET訪問(wèn)的流程如下圖:
終端用戶通過(guò)域名解析找到接入層
請(qǐng)求發(fā)到接入層
接入層通過(guò)內(nèi)網(wǎng)名字服務(wù)查找邏輯層
接入層訪問(wèn)邏輯層
邏輯層通過(guò)內(nèi)網(wǎng)名字服務(wù)查找數(shù)據(jù)層,并寫入數(shù)據(jù)層
本地?cái)?shù)據(jù)層SET同步到異地其它數(shù)據(jù)層SET

圖:手機(jī)QQ的一鍵式調(diào)度表單
QQ空間等核心模塊服務(wù)均為SET多地分布的架構(gòu),SET間數(shù)據(jù)無(wú)差異,在故障發(fā)生的場(chǎng)景,能夠輕松的實(shí)現(xiàn)跨地域調(diào)度,保障業(yè)務(wù)質(zhì)量的穩(wěn)定可靠。
2、快速的調(diào)度能力
SET之上是用戶或服務(wù)間的調(diào)度能力,調(diào)度分外網(wǎng)調(diào)度和內(nèi)網(wǎng)調(diào)度。
外網(wǎng)調(diào)度有三種方式:基于域名解析的GSLB域名調(diào)度;QQ的IP調(diào)度和APP的WNS(內(nèi)部代號(hào)維納斯)調(diào)度。
內(nèi)網(wǎng)服務(wù)間調(diào)度通過(guò)L5和CMLB內(nèi)網(wǎng)名字服務(wù)實(shí)現(xiàn)。
1)GSLB全局域名解析服務(wù)
GSLB是騰訊的DNS域名解析服務(wù),可根據(jù)用戶IP識(shí)別出用戶歸屬地,繼而實(shí)現(xiàn)針對(duì)不同來(lái)源的用戶返回不同的IP功能。QQ空間的PC用戶調(diào)度便是依賴GSLB的調(diào)度能力實(shí)現(xiàn)。

2)QQ IP調(diào)度
QQ具備精確到機(jī)架的最優(yōu)調(diào)度能力。用戶請(qǐng)求經(jīng)過(guò)實(shí)時(shí)計(jì)算獲得最優(yōu)的訪問(wèn)位置,包括城市、IDC、網(wǎng)絡(luò)模塊和服務(wù)器IP。
通過(guò)秒級(jí)的IP配置下發(fā),用戶可立即重定向到指定的訪問(wèn)機(jī)房。
3)WNS
維納斯(WNS,Wireless Network Service),又名移動(dòng)連通服務(wù),是一個(gè)為APP提供高連通、高可靠、強(qiáng)安全的網(wǎng)絡(luò)連接通道的服務(wù);它利用海量運(yùn)維數(shù)據(jù)不斷持續(xù)優(yōu)化調(diào)度算法,實(shí)現(xiàn)用戶就近接入。
移動(dòng)端的接入使用WNS的服務(wù),無(wú)需域名解析,直接利用WNS的IP跑馬邏輯尋求最優(yōu)的接入方式,移動(dòng)用戶可以通過(guò)WNS服務(wù)主動(dòng)觸發(fā)用戶重連,繼而控制用戶調(diào)度所需接入的新IP。
4)L5/CMLB
L5和CMLB是內(nèi)部服務(wù)模塊尋址和負(fù)載均衡的自研組件。
L5(Load Balancer,5代指Level5,即99.999%的可用性)是一套兼具負(fù)載均衡和過(guò)載保護(hù)的容錯(cuò)系統(tǒng),本質(zhì)上是一個(gè)集名字服務(wù)、負(fù)載均衡、故障容錯(cuò)和過(guò)載保護(hù)的路由決策系統(tǒng)。服務(wù)模塊間通過(guò)L5來(lái)尋址,譬如接入SET A通過(guò)L5來(lái)選擇邏輯SET B,邏輯SET B通過(guò)L5選擇數(shù)據(jù)SET C。
L5的基本工作原理可以抽象為基于機(jī)器初始配置信息,通過(guò)自適應(yīng)算法,以兩個(gè)關(guān)鍵指標(biāo)(請(qǐng)求成功率和請(qǐng)求延時(shí))為依據(jù),周期性計(jì)算出每個(gè)被調(diào)機(jī)器的權(quán)重,再使用高效的配額算法分配各個(gè)主調(diào)機(jī)器的訪問(wèn)路由,主調(diào)機(jī)器上的業(yè)務(wù)進(jìn)程通過(guò)API來(lái)取得這些路由,調(diào)用結(jié)束時(shí)通過(guò)API來(lái)反饋路由的好與壞。
5)一鍵式調(diào)度能力
一個(gè)工程師從織云(內(nèi)部自動(dòng)化運(yùn)維系統(tǒng)的代號(hào))上通過(guò)一鍵式操作就可以完成全網(wǎng)和內(nèi)網(wǎng)調(diào)度過(guò)程。調(diào)度平滑,用戶無(wú)感知,千萬(wàn)級(jí)用戶調(diào)度可以在30分鐘內(nèi)實(shí)現(xiàn)。
3、數(shù)據(jù)多地同步能力
異地容災(zāi)除了計(jì)算資源的分布,更大的挑戰(zhàn)是存儲(chǔ)資源的分布。QQ有三種方式實(shí)現(xiàn)數(shù)據(jù)多地同步,分別是:
QQ狀態(tài)同步,QQ DB數(shù)據(jù)的主備同步和QQ空間DB數(shù)據(jù)的同步中心。
1)QQ狀態(tài)同步
QQ在各個(gè)區(qū)域都是全量數(shù)據(jù)存儲(chǔ)。但用戶登錄時(shí)根據(jù)來(lái)源區(qū)域而調(diào)度到不同區(qū)域的IDC。用戶登錄到不同區(qū)域的狀態(tài)信息要在數(shù)秒內(nèi)全量同步到所有區(qū)域的狀態(tài)中心,狀態(tài)數(shù)據(jù)包括離在線等基本狀態(tài)、登陸終端等用戶信息等。
同步要克服多地同寫、本地?cái)?shù)據(jù)可靠、延遲丟包、數(shù)據(jù)一致等困難,挑戰(zhàn)是非常大的。
架構(gòu)通過(guò)同步系統(tǒng)解決狀態(tài)信息同步。同步系統(tǒng)除通過(guò)本地的同步代理存儲(chǔ)本地雙份數(shù)據(jù)外,還負(fù)責(zé)三地狀態(tài)數(shù)據(jù)同步。它會(huì)從接入中心內(nèi)收集在線登錄用戶的狀態(tài)信息,按照Shard組織單元匯總這些狀態(tài)信息,經(jīng)數(shù)據(jù)去重后,同步給需要這些狀態(tài)信息的其他系統(tǒng):
同步隊(duì)列和斷點(diǎn)續(xù)傳保證短時(shí)中斷不丟數(shù)據(jù);
多級(jí)SEQ/時(shí)戳機(jī)制保證數(shù)據(jù)延時(shí)、數(shù)據(jù)源故障等異常下的數(shù)據(jù)一致;
TCP同步流容忍延時(shí)丟包,減小TCP擁塞算法的影響,并具備多級(jí)流量控制、業(yè)務(wù)粒度的過(guò)載保護(hù)。
本地的全量DR還會(huì)將狀態(tài)全量數(shù)據(jù)落地,以保證數(shù)據(jù)的高可靠性。

圖:QQ狀態(tài)同步架構(gòu)圖
2)QQ DB數(shù)據(jù)的主備同步
QQ DB采用內(nèi)部研發(fā)的Grocery 分布式KV存儲(chǔ)系統(tǒng),采用類似MySQL的主從復(fù)制架構(gòu)實(shí)現(xiàn)主備冗余和異地分布。Grocery支持一主多備,其中主服務(wù)器提供讀寫能力,備服務(wù)器提供只讀能力。主備服務(wù)器可任意分布在同一IDC或不同區(qū)域。
譬如某最終一致性的業(yè)務(wù)場(chǎng)景中,一臺(tái)主和一臺(tái)備存儲(chǔ)服務(wù)器部署在深圳,另2個(gè)備存儲(chǔ)服務(wù)器分別部署到天津和上海。業(yè)務(wù)集中寫深圳的主存儲(chǔ)服務(wù)器,主存儲(chǔ)服務(wù)器通過(guò)專線同步到天津和上海的備存儲(chǔ)服務(wù)器。主服務(wù)器出現(xiàn)問(wèn)題時(shí)由某地的備服務(wù)器提升為主服務(wù)器,并向業(yè)務(wù)提供寫能力。
Grocery的主備同步通過(guò)sequence和流水保證主備數(shù)據(jù)的一致性。
3)同步中心
QQ空間采用內(nèi)部研發(fā)的CKV分布式KV存儲(chǔ)系統(tǒng),通過(guò)同步中心實(shí)現(xiàn)多地同步。同步中心是一套消息隊(duì)列服務(wù),應(yīng)用層先寫數(shù)據(jù)到同步中心,各地區(qū)的同步讀進(jìn)程從隊(duì)列服務(wù)里讀取同步數(shù)據(jù),并寫入本地的數(shù)據(jù)SET,從而保證1秒以內(nèi)的多地?cái)?shù)據(jù)同步。

運(yùn)營(yíng)能力
1、織云自動(dòng)化運(yùn)維平臺(tái)
織云是社交業(yè)務(wù)運(yùn)維自動(dòng)化平臺(tái),已經(jīng)實(shí)現(xiàn)上千個(gè)業(yè)務(wù)模塊的無(wú)人職守自動(dòng)擴(kuò)容,具有按業(yè)務(wù)搬遷能力,覆蓋社交網(wǎng)絡(luò)全部業(yè)務(wù)。
織云改變了傳統(tǒng)的運(yùn)維模式。以前的運(yùn)維模式是以運(yùn)維人員為中心,所有變更都需要運(yùn)維登錄到各運(yùn)營(yíng)系統(tǒng)(部署、發(fā)布、接入)、協(xié)調(diào)各種資源(開(kāi)發(fā)、測(cè)試、設(shè)備管理員)來(lái)完成。
而織云是以配置為中心,運(yùn)維只需要在織云管理好配置和流程,織云會(huì)根據(jù)配置將變更自動(dòng)化。
以業(yè)務(wù)擴(kuò)容為例,以前的運(yùn)維模式是這樣的:
運(yùn)維需要到資源管理系統(tǒng)申領(lǐng)設(shè)備;
到包發(fā)布系統(tǒng)裝包;
到配置中心發(fā)配置;
用自己的工具同步文件;
到各權(quán)限系統(tǒng)申請(qǐng)權(quán)限……。
織云將這一切操作自動(dòng)化,一鍵觸發(fā),10分鐘完成。
在這次龐大的“零感知”的遷移中,織云起了關(guān)鍵的核心作用。遷移的流程成功率和工具成功率達(dá)到99%以上,自動(dòng)調(diào)度流程成功率也達(dá)到80%以上。
2、柔性服務(wù)和過(guò)載保護(hù)
由于成本的限制,不可能對(duì)所有服務(wù)都實(shí)現(xiàn)高度冗余。因此在某些非核心模塊達(dá)到容量閾值或同城故障而無(wú)異地容災(zāi)時(shí),通過(guò)配置開(kāi)關(guān)來(lái)關(guān)閉非核心服務(wù),犧牲一些業(yè)務(wù)邏輯來(lái)保證核心功能完整性及用戶體驗(yàn)。
工程師織云上通過(guò)一鍵式下發(fā)配置來(lái)實(shí)現(xiàn)柔性策略。

每個(gè)服務(wù)上線前都具備過(guò)載保護(hù)機(jī)制。
如架構(gòu)中的L5內(nèi)網(wǎng)名字服務(wù)除提供尋址、容錯(cuò)功能外,還利用時(shí)間片內(nèi)基于客戶端請(qǐng)求質(zhì)量延時(shí)和錯(cuò)誤率統(tǒng)計(jì)來(lái)確定最高訪問(wèn)請(qǐng)求數(shù)的閾值。通過(guò)負(fù)載均衡和重試的頻率控制,來(lái)防止處理不及時(shí)過(guò)載雪崩,限制處理最大的請(qǐng)求數(shù)過(guò)載雪崩。過(guò)載配置參數(shù)化,通過(guò)配置文件進(jìn)行靈活調(diào)整。
某些服務(wù)模塊在請(qǐng)求進(jìn)入隊(duì)列時(shí)打上時(shí)間戳,當(dāng)隊(duì)列達(dá)到最大數(shù),或檢查時(shí)間戳發(fā)現(xiàn)超時(shí)后會(huì)丟棄超出閾值的請(qǐng)求,保證系統(tǒng)不過(guò)載而導(dǎo)致服務(wù)不可靠。
3、快速伸縮能力
通過(guò)SET標(biāo)準(zhǔn)化部署和織云自動(dòng)化平臺(tái),一個(gè)SET內(nèi)的幾百臺(tái)服務(wù)器可在10分鐘內(nèi)完成自動(dòng)化部署上線,實(shí)現(xiàn)操作系統(tǒng)安裝、包安裝、應(yīng)用部署、自動(dòng)測(cè)試、自動(dòng)上線等一體化能力。
4、立體監(jiān)控
運(yùn)營(yíng)團(tuán)隊(duì)建設(shè)了天網(wǎng)等集基礎(chǔ)監(jiān)控和業(yè)務(wù)監(jiān)控能力在內(nèi)的監(jiān)控平臺(tái)和核心視圖,能夠即時(shí)在PC端或移動(dòng)端查看各業(yè)務(wù)、各架構(gòu)層的容量水平,保證調(diào)度前后能夠隨時(shí)了解平臺(tái)狀態(tài),提供了有效的預(yù)警機(jī)制和運(yùn)營(yíng)分析能力。
在監(jiān)控?cái)?shù)據(jù)和業(yè)務(wù)訪問(wèn)鏈條的基礎(chǔ)上,監(jiān)控平臺(tái)通過(guò)DLP(業(yè)務(wù)生死線)第一時(shí)間感知業(yè)務(wù)異常,通過(guò)root分析能力在10分鐘內(nèi)準(zhǔn)確定位業(yè)務(wù)異常的根源。
5、技術(shù)保障
運(yùn)營(yíng)團(tuán)隊(duì)通過(guò)日常業(yè)務(wù)鏈條壓測(cè)和預(yù)演等方式來(lái)不斷發(fā)現(xiàn)系統(tǒng)短板、優(yōu)化運(yùn)營(yíng)能力和提升響應(yīng)速度,定期和業(yè)務(wù)聯(lián)合演練。
下圖是PC QQ日常調(diào)度的預(yù)演郵件截圖:

每個(gè)業(yè)務(wù)和組件環(huán)節(jié)都各有相關(guān)預(yù)案。重大故障有成熟的處理機(jī)制,由大故障經(jīng)理、運(yùn)營(yíng)值班工程師和QA等角色組成,在遇到重大故障時(shí)根據(jù)影響范圍啟動(dòng)相應(yīng)的應(yīng)急機(jī)制,按既定策略來(lái)和流程實(shí)施不同的應(yīng)急措施,將結(jié)果即時(shí)同步給業(yè)務(wù)、開(kāi)發(fā)、QA和運(yùn)營(yíng)。
信息高效地在不同責(zé)任團(tuán)隊(duì)中上傳下達(dá),幫助了從上層到下層的決策和處理,使得調(diào)度處理及后續(xù)跟蹤有序進(jìn)行,保證大調(diào)度的順利實(shí)施。
結(jié)尾
騰訊在長(zhǎng)時(shí)間的海量業(yè)務(wù)運(yùn)營(yíng)中積累了成熟的方法論,從上述文章中表現(xiàn)出來(lái)的有全網(wǎng)調(diào)度、有損服務(wù)、柔性可用、SET模型、立體監(jiān)控、過(guò)載保護(hù)和大系統(tǒng)小做等方法論。
這些方法論和建設(shè)共同支撐了813大調(diào)度的成功實(shí)施。希望這些經(jīng)驗(yàn)和實(shí)踐能夠?yàn)闃I(yè)界同仁借鑒所用,將中國(guó)互聯(lián)網(wǎng)整體運(yùn)營(yíng)能力提上新的臺(tái)階。
end

數(shù)據(jù)分析咨詢請(qǐng)掃描二維碼

若不方便掃碼,搜微信號(hào):CDAshujufenxi

數(shù)據(jù)分析師資訊
更多

OK
客服在線
立即咨詢
客服在線
立即咨詢
') } function initGt() { var handler = function (captchaObj) { captchaObj.appendTo('#captcha'); captchaObj.onReady(function () { $("#wait").hide(); }).onSuccess(function(){ $('.getcheckcode').removeClass('dis'); $('.getcheckcode').trigger('click'); }); window.captchaObj = captchaObj; }; $('#captcha').show(); $.ajax({ url: "/login/gtstart?t=" + (new Date()).getTime(), // 加隨機(jī)數(shù)防止緩存 type: "get", dataType: "json", success: function (data) { $('#text').hide(); $('#wait').show(); // 調(diào)用 initGeetest 進(jìn)行初始化 // 參數(shù)1:配置參數(shù) // 參數(shù)2:回調(diào),回調(diào)的第一個(gè)參數(shù)驗(yàn)證碼對(duì)象,之后可以使用它調(diào)用相應(yīng)的接口 initGeetest({ // 以下 4 個(gè)配置參數(shù)為必須,不能缺少 gt: data.gt, challenge: data.challenge, offline: !data.success, // 表示用戶后臺(tái)檢測(cè)極驗(yàn)服務(wù)器是否宕機(jī) new_captcha: data.new_captcha, // 用于宕機(jī)時(shí)表示是新驗(yàn)證碼的宕機(jī) product: "float", // 產(chǎn)品形式,包括:float,popup width: "280px", https: true // 更多配置參數(shù)說(shuō)明請(qǐng)參見(jiàn):http://docs.geetest.com/install/client/web-front/ }, handler); } }); } function codeCutdown() { if(_wait == 0){ //倒計(jì)時(shí)完成 $(".getcheckcode").removeClass('dis').html("重新獲取"); }else{ $(".getcheckcode").addClass('dis').html("重新獲取("+_wait+"s)"); _wait--; setTimeout(function () { codeCutdown(); },1000); } } function inputValidate(ele,telInput) { var oInput = ele; var inputVal = oInput.val(); var oType = ele.attr('data-type'); var oEtag = $('#etag').val(); var oErr = oInput.closest('.form_box').next('.err_txt'); var empTxt = '請(qǐng)輸入'+oInput.attr('placeholder')+'!'; var errTxt = '請(qǐng)輸入正確的'+oInput.attr('placeholder')+'!'; var pattern; if(inputVal==""){ if(!telInput){ errFun(oErr,empTxt); } return false; }else { switch (oType){ case 'login_mobile': pattern = /^1[3456789]\d{9}$/; if(inputVal.length==11) { $.ajax({ url: '/login/checkmobile', type: "post", dataType: "json", data: { mobile: inputVal, etag: oEtag, page_ur: window.location.href, page_referer: document.referrer }, success: function (data) { } }); } break; case 'login_yzm': pattern = /^\d{6}$/; break; } if(oType=='login_mobile'){ } if(!!validateFun(pattern,inputVal)){ errFun(oErr,'') if(telInput){ $('.getcheckcode').removeClass('dis'); } }else { if(!telInput) { errFun(oErr, errTxt); }else { $('.getcheckcode').addClass('dis'); } return false; } } return true; } function errFun(obj,msg) { obj.html(msg); if(msg==''){ $('.login_submit').removeClass('dis'); }else { $('.login_submit').addClass('dis'); } } function validateFun(pat,val) { return pat.test(val); }