2亿QQ用户大调度背后的架构设计和高效运营(上)
作者介紹
周小軍
騰訊高級運維工程師,目前在騰訊社交負責社交業務海量NoSQL集群運維和團隊管理。曾在天涯社區任運維副總監。對互聯網網站架構、數據中心、云計算及自動化運維等領域有深入研究和理解,積累了十多年的IT運維管理經驗。希望窮盡一生來深入鉆研運維領域。
全網大調度
8月12日23點30分,天津市濱海新區貨柜碼頭發生集裝箱連串爆炸。
占地8萬平方米,服務器超過20萬臺的騰訊天津數據中心是騰訊在亞洲最大的數據中心,危險品倉庫爆炸時,數據中心距離爆炸點僅僅1.5公里。
情況十分危急!數據中心隨時有可能被迫停止運營!
事件發生后,第一時間排查了損傷,發現損傷包括冷機系統宕機,冷凍水管爆管,地下水發生嚴重水浸等問題,加之爆炸之后各種信息不明朗…
2億QQ用戶可能深受影響!這甚至影響很多公司的業務,因為QQ早已不是簡單的聊天工具,而是商務洽談之必備!
天津數據中心內含騰訊社交核心業務,包括QQ、空間、相冊及音樂等業務。社交核心業務主要按深圳、天津和上海三地來分布部署,各支撐中國三大區域的用戶訪問。
其中天津數據中心是核心機房之一,承載我國北方所有用戶流量,高峰期在線用戶超過1億。如果天津數據中心停運,將有30%以上的QQ用戶服務受到影響。
所幸的事,類似于谷歌擁有的全球業務調配能力,騰訊社交網絡經過長期的建設積累,具備了數據和業務在全國范圍的云數據中心中轉換遷移的能力。
經過24小時的技術應急大調度,QQ用戶服務最終無感知地在線遷移到深圳和上海,完成中國互聯網史上最大規模的用戶調度。
在如此嚴峻的情況下,QQ運營繼續保持全年4個9的可持續服務能力。
下面先簡單介紹一下調度過程。
1、啟動
社交核心業務的三地部署各具有一定的容量冗余,能保證一地災難性故障時其他二地能支撐所有用戶。
事件發生后,社交運營團隊立即啟動重大故障處理流程,成立突發事件應急團隊,啟用調度應急預案,做好天津用戶調度回深圳和上海的準備:
應急團隊按業務分配主、備負責人配合業務線來跟進實施,接入、邏輯和數據三個架構層各安排主備負責人協調。
由故障值班工程師負責在應急團隊中協調和溝通。
最上層由大事件經理將匯總信息和實施過程實時同步給總監、業務、運維和QA等工作群組。
2、調度
13日團隊開始以每千萬為粒度將在線用戶調度回深圳。
晚上22時是QQ在線用戶峰值時間段,深圳一些服務模塊的容量上漲到80%的水位,應急團隊利用資源池里的服務器資源,邊調度邊擴容模塊容量,把水位下調到可控范圍之內。
對于沒有資源擴容的模塊,團隊采用服務柔性的方式順利過渡。如QQ采取的柔性為取消一些非關鍵服務:
如不加載聯系人備注,不讀取QQ漫游消息等。
通過在線擴容、服務柔性等策略,在線高峰期間用戶訪問核心服務順暢,順利地度過了流量洪峰,用戶無感知。
下圖為手機QQ天津地區在線用戶曲線圖:
上圖可以觀察到從13號晚上到14號凌晨,天津在線用戶降到0的曲線下降趨勢;以及14號下午回遷60%天津用戶后的曲線上升。
整個過程不是僅僅從天津遷出到回遷這么簡單,具體是這樣的:
14日凌晨1時30分,天津所有用戶全部調度、遷出完畢。
調度成功結束,此時天津數據中心在線用戶數已為零。
14日上午,天津數據中心運維團隊知會天津數據中心暫時可以穩定運營。
應急團隊于是主動將深圳的1千萬在線用戶調度回天津,以緩解深圳數據中心的內網傳輸壓力,并關閉之前開啟的服務柔性開關,恢復全功能服務。
14日中午,天津數據中心預警解除,現場可控。
應急團隊將大部分在線用戶調度回天津,使得天津在線用戶恢復到4千萬的容量。
20日,天津爆炸現場解控,數據中心幾處受損得到全部修復,基礎設施恢復正常,警報解除。
應急團隊將北方用戶全部調度回天津,天津恢復回812之前的流量水平。
調度的幾點挑戰
QQ 2億多在線峰值用戶要實時全網調度,所面臨的挑戰是非常大的,主要有:
用戶如何在體驗無損的情況下調度到異地?
數據中心三地分布,用戶在三地之間以秒間調度,必須保證不掉線、不丟數據,用戶完全感知不到異地切換。因此必須要保證狀態、消息、數據等做到三地的一致。
用戶的狀態數據、消息如何保證不丟失?
用戶有各類狀態,如在線、隱身、忙碌等,必須要實時同步到三地數據中心;用戶消息包括C2C消息、群消息、離線消息等,要解決用戶切換時消息不丟失的挑戰。
用戶的數據如何做到幾地的全量一致性同步?
這里要解決以下問題,包括如何保證同步的可靠性、實時性;如何支撐大流量高效分發和靈活伸縮;如何應對頻發網絡抖動和異地專線延時;如何支持多地區互聯和區域自治。
異地的服務容量(包括服務器容量、模塊容量、業務容量和IDC容量等)能否支撐大量用戶請求的涌入,異地容量不能支撐時如何處理用戶請求?
容量峰值后如何快速縮容?
調度能做到多快,分鐘級、小時級還是天級?
調度速度越快就越能具備快速反應能力,而目前QQ已經做到秒級的調度能力。
運營是否具備自動化的調度能力?
調度必須是一鍵式全自動化,一個工程師就能輕易實現全局的調度能力。
以上任何一個挑戰解決不了的話,都必將影響調度的實現。
在下篇將講述,我們是如何應對這些挑戰的。本次億級用戶遷移背后的技術架構和運營,其中用到的核心技術是SET,本文先和大家做個預熱。
關于 SET
SET,就像標準化的集裝箱,是一個標準化的服務模塊集群。它把原錯綜復雜的服務器內連接關系和功能耦合模糊掉,變成運營層面看到的一個個業務部署模塊。
騰訊社交業務以SET的方式部署服務,每個SET集合了一個或一組服務模塊,通過接口對外提供調用服務。SET對外輸出二種容量:
一個從業務層面來看到的量,即一組服務器的處理能力,處理能力有兩個量來描述,PCU容量(萬人/在線)和存儲容量(GB);
另一個層面則直接來自于成本層面,即這一組服務器有多少臺服務器和外/內網帶寬。
SET間是無狀態的,通過SET可以實現橫向擴容能力。也就是說這些業務都支持部署最小化,當有需要時,可以不斷增加SET數量來支持業務的流量,且SET之間無差異。
欲知后續如何,且聽下文分解~~
轉載于:https://blog.51cto.com/luoahong/1738682
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的2亿QQ用户大调度背后的架构设计和高效运营(上)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Topshelf 学习 跨平台
- 下一篇: Oracle 查询当前日期