
文 | 周小軍
來源 | 高效運維
摘要: 作者介紹周小軍騰訊高級運維工程師,目前在騰訊社交負責社交業務海量NoSQL集群運維和團隊管理。曾在天涯社區任運維副總監。對互聯網網站架構、數據中心、云計算及自動化運維等領域有深入研究和理解,積累了十多年的經驗
作者介紹
周小軍
騰訊高級運維工程師,目前在騰訊社交負責社交業務海量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之間無差異。
下篇大調度背后的技術架構
1、多地分布和異地容災能力
QQ及業務服務以SET的標準化方式部署,以在線容量為標準劃分SET,采用無熱點的分布式部署,做法是把QQ號碼通過基于unit的一致性分布算法劃分成不同的Shard。
QQ SET內各層模塊解耦,100多個核心模塊分成接入中心、消息中心、狀態中心和同步中心4個中心。中心內的模塊根據物理分布情況靈活組合成流量內聚、號碼無關、僅跟在線容量相關的集群。架構可以按照在線需求靈活擴容和伸縮,優化使用專線,實現異地分布。
以此為基礎,QQ核心服務做了三地分布(深圳、天津和上海),單一地區服務故障時核心服務可迅速調度到另二個區域。
圖:QQ三地分布架構圖
QQ空間、音樂、相冊等業務以三層標準架構的SET方式部署。QQ空間按照訪問來源和功能的不同將SET劃分為PC接入SET(Aset)、手機接入SET(Wset)和數據SET(Iset)。
這3類SET在設計架構時,就已經融入了三地分布(深圳、天津、上海)的容災理念,通過GSLB和移動聯通服務,將來源不同的用戶分別均攤到三地,每地分布的SET都能提供空間最核心的社交服務處理能力。
圖:QQ空間三地分布架構圖
跨地域SET訪問的流程如下圖:
終端用戶通過域名解析找到接入層
請求發到接入層
接入層通過內網名字服務查找邏輯層
接入層訪問邏輯層
邏輯層通過內網名字服務查找數據層,并寫入數據層
本地數據層SET同步到異地其它數據層SET
圖:手機QQ的一鍵式調度表單
QQ空間等核心模塊服務均為SET多地分布的架構,SET間數據無差異,在故障發生的場景,能夠輕松的實現跨地域調度,保障業務質量的穩定可靠。
2、快速的調度能力
SET之上是用戶或服務間的調度能力,調度分外網調度和內網調度。
外網調度有三種方式:基于域名解析的GSLB域名調度;QQ的IP調度和APP的WNS(內部代號維納斯)調度。
內網服務間調度通過L5和CMLB內網名字服務實現。
1)GSLB全局域名解析服務
GSLB是騰訊的DNS域名解析服務,可根據用戶IP識別出用戶歸屬地,繼而實現針對不同來源的用戶返回不同的IP功能。QQ空間的PC用戶調度便是依賴GSLB的調度能力實現。
2)QQ IP調度
QQ具備精確到機架的最優調度能力。用戶請求經過實時計算獲得最優的訪問位置,包括城市、IDC、網絡模塊和服務器IP。
通過秒級的IP配置下發,用戶可立即重定向到指定的訪問機房。
3)WNS
維納斯(WNS,Wireless Network Service),又名移動連通服務,是一個為APP提供高連通、高可靠、強安全的網絡連接通道的服務;它利用海量運維數據不斷持續優化調度算法,實現用戶就近接入。
移動端的接入使用WNS的服務,無需域名解析,直接利用WNS的IP跑馬邏輯尋求最優的接入方式,移動用戶可以通過WNS服務主動觸發用戶重連,繼而控制用戶調度所需接入的新IP。
4)L5/CMLB
L5和CMLB是內部服務模塊尋址和負載均衡的自研組件。
L5(Load Balancer,5代指Level5,即99.999%的可用性)是一套兼具負載均衡和過載保護的容錯系統,本質上是一個集名字服務、負載均衡、故障容錯和過載保護的路由決策系統。服務模塊間通過L5來尋址,譬如接入SET A通過L5來選擇邏輯SET B,邏輯SET B通過L5選擇數據SET C。
L5的基本工作原理可以抽象為基于機器初始配置信息,通過自適應算法,以兩個關鍵指標(請求成功率和請求延時)為依據,周期性計算出每個被調機器的權重,再使用高效的配額算法分配各個主調機器的訪問路由,主調機器上的業務進程通過API來取得這些路由,調用結束時通過API來反饋路由的好與壞。
5)一鍵式調度能力
一個工程師從織云(內部自動化運維系統的代號)上通過一鍵式操作就可以完成全網和內網調度過程。調度平滑,用戶無感知,千萬級用戶調度可以在30分鐘內實現。
3、數據多地同步能力
異地容災除了計算資源的分布,更大的挑戰是存儲資源的分布。QQ有三種方式實現數據多地同步,分別是:
QQ狀態同步,QQ DB數據的主備同步和QQ空間DB數據的同步中心。
1)QQ狀態同步
QQ在各個區域都是全量數據存儲。但用戶登錄時根據來源區域而調度到不同區域的IDC。用戶登錄到不同區域的狀態信息要在數秒內全量同步到所有區域的狀態中心,狀態數據包括離在線等基本狀態、登陸終端等用戶信息等。
同步要克服多地同寫、本地數據可靠、延遲丟包、數據一致等困難,挑戰是非常大的。
架構通過同步系統解決狀態信息同步。同步系統除通過本地的同步代理存儲本地雙份數據外,還負責三地狀態數據同步。它會從接入中心內收集在線登錄用戶的狀態信息,按照Shard組織單元匯總這些狀態信息,經數據去重后,同步給需要這些狀態信息的其他系統:
同步隊列和斷點續傳保證短時中斷不丟數據;
多級SEQ/時戳機制保證數據延時、數據源故障等異常下的數據一致;
TCP同步流容忍延時丟包,減小TCP擁塞算法的影響,并具備多級流量控制、業務粒度的過載保護。
本地的全量DR還會將狀態全量數據落地,以保證數據的高可靠性。
圖:QQ狀態同步架構圖
2)QQ DB數據的主備同步
QQ DB采用內部研發的Grocery 分布式KV存儲系統,采用類似MySQL的主從復制架構實現主備冗余和異地分布。Grocery支持一主多備,其中主服務器提供讀寫能力,備服務器提供只讀能力。主備服務器可任意分布在同一IDC或不同區域。
譬如某最終一致性的業務場景中,一臺主和一臺備存儲服務器部署在深圳,另2個備存儲服務器分別部署到天津和上海。業務集中寫深圳的主存儲服務器,主存儲服務器通過專線同步到天津和上海的備存儲服務器。主服務器出現問題時由某地的備服務器提升為主服務器,并向業務提供寫能力。
Grocery的主備同步通過sequence和流水保證主備數據的一致性。
3)同步中心
QQ空間采用內部研發的CKV分布式KV存儲系統,通過同步中心實現多地同步。同步中心是一套消息隊列服務,應用層先寫數據到同步中心,各地區的同步讀進程從隊列服務里讀取同步數據,并寫入本地的數據SET,從而保證1秒以內的多地數據同步。
運營能力
1、織云自動化運維平臺
織云是社交業務運維自動化平臺,已經實現上千個業務模塊的無人職守自動擴容,具有按業務搬遷能力,覆蓋社交網絡全部業務。
織云改變了傳統的運維模式。以前的運維模式是以運維人員為中心,所有變更都需要運維登錄到各運營系統(部署、發布、接入)、協調各種資源(開發、測試、設備管理員)來完成。
而織云是以配置為中心,運維只需要在織云管理好配置和流程,織云會根據配置將變更自動化。
以業務擴容為例,以前的運維模式是這樣的:
運維需要到資源管理系統申領設備;
到包發布系統裝包;
到配置中心發配置;
用自己的工具同步文件;
到各權限系統申請權限……。
織云將這一切操作自動化,一鍵觸發,10分鐘完成。
在這次龐大的“零感知”的遷移中,織云起了關鍵的核心作用。遷移的流程成功率和工具成功率達到99%以上,自動調度流程成功率也達到80%以上。
2、柔性服務和過載保護
由于成本的限制,不可能對所有服務都實現高度冗余。因此在某些非核心模塊達到容量閾值或同城故障而無異地容災時,通過配置開關來關閉非核心服務,犧牲一些業務邏輯來保證核心功能完整性及用戶體驗。
工程師織云上通過一鍵式下發配置來實現柔性策略。
每個服務上線前都具備過載保護機制。
如架構中的L5內網名字服務除提供尋址、容錯功能外,還利用時間片內基于客戶端請求質量延時和錯誤率統計來確定最高訪問請求數的閾值。通過負載均衡和重試的頻率控制,來防止處理不及時過載雪崩,限制處理最大的請求數過載雪崩。過載配置參數化,通過配置文件進行靈活調整。
某些服務模塊在請求進入隊列時打上時間戳,當隊列達到最大數,或檢查時間戳發現超時后會丟棄超出閾值的請求,保證系統不過載而導致服務不可靠。
3、快速伸縮能力
通過SET標準化部署和織云自動化平臺,一個SET內的幾百臺服務器可在10分鐘內完成自動化部署上線,實現操作系統安裝、包安裝、應用部署、自動測試、自動上線等一體化能力。
4、立體監控
運營團隊建設了天網等集基礎監控和業務監控能力在內的監控平臺和核心視圖,能夠即時在PC端或移動端查看各業務、各架構層的容量水平,保證調度前后能夠隨時了解平臺狀態,提供了有效的預警機制和運營分析能力。
在監控數據和業務訪問鏈條的基礎上,監控平臺通過DLP(業務生死線)第一時間感知業務異常,通過root分析能力在10分鐘內準確定位業務異常的根源。
5、技術保障
運營團隊通過日常業務鏈條壓測和預演等方式來不斷發現系統短板、優化運營能力和提升響應速度,定期和業務聯合演練。
下圖是PC QQ日常調度的預演郵件截圖:
每個業務和組件環節都各有相關預案。重大故障有成熟的處理機制,由大故障經理、運營值班工程師和QA等角色組成,在遇到重大故障時根據影響范圍啟動相應的應急機制,按既定策略來和流程實施不同的應急措施,將結果即時同步給業務、開發、QA和運營。
信息高效地在不同責任團隊中上傳下達,幫助了從上層到下層的決策和處理,使得調度處理及后續跟蹤有序進行,保證大調度的順利實施。
結尾
騰訊在長時間的海量業務運營中積累了成熟的方法論,從上述文章中表現出來的有全網調度、有損服務、柔性可用、SET模型、立體監控、過載保護和大系統小做等方法論。
這些方法論和建設共同支撐了813大調度的成功實施。希望這些經驗和實踐能夠為業界同仁借鑒所用,將中國互聯網整體運營能力提上新的臺階。
end
數據分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
CDA數據分析師證書考試體系(更新于2025年05月22日)
2025-05-26解碼數據基因:從數字敏感度到邏輯思維 每當看到超市貨架上商品的排列變化,你是否會聯想到背后的銷售數據波動?三年前在零售行 ...
2025-05-23在本文中,我們將探討 AI 為何能夠加速數據分析、如何在每個步驟中實現數據分析自動化以及使用哪些工具。 數據分析中的AI是什么 ...
2025-05-20當數據遇見人生:我的第一個分析項目 記得三年前接手第一個數據分析項目時,我面對Excel里密密麻麻的銷售數據手足無措。那些跳動 ...
2025-05-20在數字化運營的時代,企業每天都在產生海量數據:用戶點擊行為、商品銷售記錄、廣告投放反饋…… 這些數據就像散落的拼圖,而相 ...
2025-05-19在當今數字化營銷時代,小紅書作為國內領先的社交電商平臺,其銷售數據蘊含著巨大的商業價值。通過對小紅書銷售數據的深入分析, ...
2025-05-16Excel作為最常用的數據分析工具,有沒有什么工具可以幫助我們快速地使用excel表格,只要輕松幾步甚至輸入幾項指令就能搞定呢? ...
2025-05-15數據,如同無形的燃料,驅動著現代社會的運轉。從全球互聯網用戶每天產生的2.5億TB數據,到制造業的傳感器、金融交易 ...
2025-05-15大數據是什么_數據分析師培訓 其實,現在的大數據指的并不僅僅是海量數據,更準確而言是對大數據分析的方法。傳統的數 ...
2025-05-14CDA持證人簡介: 萬木,CDA L1持證人,某電商中廠BI工程師 ,5年數據經驗1年BI內訓師,高級數據分析師,擁有豐富的行業經驗。 ...
2025-05-13CDA持證人簡介: 王明月 ,CDA 數據分析師二級持證人,2年數據產品工作經驗,管理學博士在讀。 學習入口:https://edu.cda.cn/g ...
2025-05-12CDA持證人簡介: 楊貞璽 ,CDA一級持證人,鄭州大學情報學碩士研究生,某上市公司數據分析師。 學習入口:https://edu.cda.cn/g ...
2025-05-09CDA持證人簡介 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度、美團、阿里等 ...
2025-05-07相信很多做數據分析的小伙伴,都接到過一些高階的數據分析需求,實現的過程需要用到一些數據獲取,數據清洗轉換,建模方法等,這 ...
2025-05-06以下的文章內容來源于劉靜老師的專欄,如果您想閱讀專欄《10大業務分析模型突破業務瓶頸》,點擊下方鏈接 https://edu.cda.cn/g ...
2025-04-30CDA持證人簡介: 邱立峰 CDA 數據分析師二級持證人,數字化轉型專家,數據治理專家,高級數據分析師,擁有豐富的行業經驗。 ...
2025-04-29CDA持證人簡介: 程靖 CDA會員大咖,暢銷書《小白學產品》作者,13年頂級互聯網公司產品經理相關經驗,曾在百度,美團,阿里等 ...
2025-04-28CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-27數據分析在當今信息時代發揮著重要作用。單因素方差分析(One-Way ANOVA)是一種關鍵的統計方法,用于比較三個或更多獨立樣本組 ...
2025-04-25CDA持證人簡介: 居瑜 ,CDA一級持證人國企財務經理,13年財務管理運營經驗,在數據分析就業和實踐經驗方面有著豐富的積累和經 ...
2025-04-25