天天看點

戰疫期,釘釘如何扛起暴增百倍的流量?

戰疫期,釘釘如何扛起暴增百倍的流量?

疫情期間,線上教育、線上辦公需求持續井噴,釘釘作為很多企業首選的線上辦公軟體,使用者量激增,特别是釘釘視訊會議、直播的需求随之飙升。同時,釘釘為了響應教育部門“停課不停學”的号召,宣布老師們可以免費試用釘釘線上課堂。

流量如洪流般湧入釘釘,一場資源擴容的技術挑戰拉開了帷幕。中國小生集體對釘釘展開了五星分期與線上寫歌“洩憤”的政策,釘釘本釘不得不線上求饒。而在大戰間隙,一聲感歎傳出:

流量這麼大,釘釘為什麼不崩?

戰疫期,釘釘如何扛起暴增百倍的流量?

從1月28日開始,釘釘音視訊會議、直播的通路流量倍數級增長。作為一個在雲上成長起來的産品,釘釘開啟了在阿裡雲的資源擴容之路,滿足了使用者在家辦公及在家上課的需求,保證了使用者良好的體驗,釘釘如何做到的?

如此大型的擴容,面臨着兩大困境:效率與資源供應

人工擴容困境:效率低下

時間太短。面對流量暴增,留給釘釘技術團隊時間隻有幾天。從1月29日起,釘釘團隊就已在阿裡雲上24小時開始全力擴容,截止2月2日,從最初的2W vCPU擴容到3W vCPU,僅做到了數倍擴容,還遠未達到業務需求。

購買與配置非常複雜。釘釘的系統架構包含多種資源,不同于單一的雲伺服器ECS服務叢集,還包含SLB、MongoDB、Redis、EIP等産品。這些資源都需要一個個購買,其之間的關系也需要技人工自行配置。

人工部署效率低、失誤率高。釘釘使用者群量級大。如果人工部署叢集,一個人部署1個叢集需要1小時左右,同時也隻能操作3-4個叢集,還需要大量的配置操作,很容易失誤。

部署複雜度高。叢集的服務能力自閉環,支援無限擴充,但也會相應提升部署複雜度,而這次擴容涉及8個地域、16個可用區,傳統部署方式擴容場景效率低下

大規模叢集管理難度大。需要快速擴容近千叢集,才能滿足幾億人在家辦公及學生在家上課的需求。當資源上千後,就很難管理資源之間的關系了,更何況超百萬的資源規模。

人工部署,容錯率比較差,排查困難。叢集之間經常出現偏差,某個叢集的SLB監聽端口是300,另一個叢集是3000,出現問題很難排查。

除卻以上困難,建立和運維如此巨大的叢集規模還會帶來更多的技術挑戰。

利用資源編排服務ROS,實作快速自動部署

早在2月2日流量洪峰帶來之前,釘釘就通過阿裡雲的資源編排服務(Resource Orchestration Service,簡稱 ROS)提高叢集部署效率、幫助其快速擴容。而這款服務不負重托,幫助釘釘在短短2小時内新增部署了超過1萬台雲伺服器,這個數字也創下了阿裡雲上快速擴容的新紀錄。

什麼選擇資源編排服務?

資源編排服務是一款幫助阿裡雲使用者簡化雲資源建立、更新和删除的自動化服務。其通過資源棧 (Stack) 這種邏輯集合來統一管理一組雲資源(一個資源棧即為一組阿裡雲資源)。利用資源編排服務,雲資源的建立、删除、克隆等操作都可以以資源棧為機關來完成。在 DevOps 實踐中,資源編排可以輕松地克隆開發、測試、線上環境;同時,也可以更容易實作應用的整體遷移和擴容。

基礎設施即代碼(Infrastructure as Code)

資源編排服務是阿裡雲提供的基礎設施即代碼(Infrastructureas Code,簡稱IaC)的雲産品,使用ROS可以幫助最快速地實踐DevOps中關于IaC的理念。

全自動托管服務

ROS産品為全托管服務,無需購買維護IaC模闆本身執行所使用的資源,隻需要關注業務所需要使用的資源,即模闆中定義的資源。尤其需要建立多個項目(對應多個資源棧)時,全托管的自動化可以更快地完成任務。

可重複部署

無論客戶是需要部署的環境是開發,測試和生産環境,都可以使用同一套模闆進行建立。指定不同的參數可以滿足環境的差異化,例如,測試環境的ECS執行個體數是2台,而生産環境的ECS執行個體數是20台。或是客戶需要進行多地域的部署,使用同一套模闆可以進行重複的部署,進而提高部署多地域的效率。

标準化部署

在實踐中,不同環境的細微差異往往帶來非常複雜的管理成本,延長了問題診斷的時間,進而影響了業務的正常運轉。通過使用ROS重複部署,可以将部署環境标準化,減少不同環境的差異,将環境的配置沉澱到模闆中。再通過類似代碼的嚴格管理流程,進而保證部署的标準性。

統一的身份認證、安全和審計

和其它的同類産品對比,阿裡雲官方出品的ROS與其它阿裡雲産品有着最佳的內建。內建資源通路管理(RAM)提供了統一的身份認證,而無需為單獨建立使用者認證體系。所有的雲産品操作都通過OpenAPI調用,意味着您可以使用操作審計服務(ActionTrail)來審查所有的運維操作,包括ROS本身。

戰疫期,釘釘如何扛起暴增百倍的流量?

ROS如何服務釘釘擴容?

定義資源模闆

ROS幫助釘釘快速建立了描述其所需要用到的阿裡雲資源(如 ECS 執行個體、資料庫執行個體等)的模闆,以定義它的叢集架構。ROS提供可視化編輯器能力,可自動可使用的模闆。模闆完成後,ROS将自動地建立并配置這些資源,即可實作基礎設施即代碼(Infrastructureas Code)的理念。

戰疫期,釘釘如何扛起暴增百倍的流量?

模闆解析與執行

當ROS接收到使用者建立資源棧的請求時,在執行建立前,首先會對模闆進行解析。解析包括文法檢查、參數校驗、依賴分析等。

依賴分析就是分析出資源間的依賴關系,目的有兩個:

  • 保證資源建立的正确性:被依賴資源建立完成後才會建立依賴資源。
  • 提供并行化建立的能力:無依賴關系的資源可以并行化建立。

模闆解析完成後,ROS會按照依賴關系建立資源,隻有所有前置資源完成建立,後面的資源才會開始建立,類似狀态機的機制。

該資源模闆可以快速地重複部署,尤其多地域、多可用區部署的情況;同時也可以減少環境之間的偏差,将部署過程和結果标準化,減少因為環境偏差引入的系統問題。

戰疫期,釘釘如何扛起暴增百倍的流量?

總結

釘釘使用資源編排服務ROS,擴容效率就提升了100倍,陸續為釘釘完成了10萬台雲伺服器的快速擴容和部署,創下了阿裡雲上快速擴容的新紀錄。

目前ROS已經擁有平均每分鐘1個叢集的擴容效率、每天超百萬vCPU彈性能力。未來,可以預見到,疫情結束後,數百萬資源回收釋放也将是一個浩大的工程。資源編排服務ROS具有一鍵銷毀功能,自動回收叢集内所有資源,避免繁瑣操作及遺漏。

彈性是雲計算最大的優勢,也是雲計算對整個社會提供的普惠和便利,而阿裡雲彈性計算資源編排服務ROS作為阿裡雲上原生的自動化編排部署服務,讓雲計算的彈性發揮到極緻,為釘釘提供了強有力的支援,讓釘釘成為使用最頻繁最流暢的平台。