騰訊底層技術進化史 | 科技前沿

撰文 / 李信馬

編輯?/ 趙晨希

題圖 / IC Photo

上周周四(6月16日),騰訊對外宣布,內部的自研業(yè)務實現了全面上云。

初次聽到這個消息,還是有些震撼,上云雖然是當下的主旋律,但像騰訊這樣體量的大公司,能夠做到全面上云,并不是一件容易的事情。根據騰訊對外公開的信息,其自研業(yè)務上云的規(guī)模突破了5000萬核;另一方面,騰訊統(tǒng)計,上云為騰訊累計節(jié)省的成本超過30億人民幣。

這不禁讓筆者想起了在《騰訊傳》看到的一段往事,1999年,缺錢的騰訊急需投資甚至賣身,卻找不到合適的投資人或買家,當時接觸過騰訊的企業(yè)都表示“不理解騰訊技術和無形資產的價值”,出價最高的不過60萬人民幣,而估值的方法,基本是按照電腦乃至桌椅板凳的數量來計算,找銀行貸款,能抵押的也不過“幾臺折舊的服務器”。

這算是騰訊的至暗時刻之一,有些黑色幽默的是,幾位愿意借錢的朋友,都不肯接受用騰訊的股票來還債,其中一位比較大方的甚至還表示:“不還也可以,但我不要你的股票?!薄v訊當前的市值,超過了3.59萬億港元。

憑借QQ秀的異軍突起,騰訊迅速成為中國最賺錢的互聯網公司之一,但很長一段時間里,也只是家能賺錢的公司,可以說,那時人們看到了騰訊的商業(yè)價值,但并沒看到騰訊具備科技上的價值,哪怕騰訊的幾位創(chuàng)始人和早期員工中不乏優(yōu)秀的工程師。

真正的科技公司是什么樣子的呢?比如“IOE”:IBM的小型機、Oracle數據庫、EMC存儲設備,簡直可以稱之為當時互聯網公司的三件套,中國互聯網公司賺到的錢,不少流進了他們的口袋??纯磭獾目萍脊?,再看看我們的科技公司,多少會讓人有些氣餒。

這也是筆者想寫這篇文章的原因,十余年過去了,我們看到像騰訊、阿里巴巴、百度這樣的互聯網大公司,研發(fā)實力不斷增強,從以前的“造不如買”,到阿里云、騰訊云對外輸出,還有在開源領域,從索取到擁抱再到貢獻,這是比單純的商業(yè)價值更令人激動的技術價值的體現。

一夜暴富或者富可敵國的故事,這個世界見過了太多,爾曹身與名俱滅,不廢江河萬古流。而底層科技的進步,才是推動我們的文明,持續(xù)前進的動力源。騰訊在這方面做的事情,要比30億更值得來聊一下。

大數據時代

2008年,《自然》雜志提出了“Big Data”(大數據)的概念,揭開了大數據時代的序幕。當時互聯網上非結構化數據迎來井噴式的爆發(fā),據說阿里因用戶激增導致“計算力”不足,早上8點到9點半,服務器的處理器使用率會飆升到98%,為了解決“大規(guī)模數據計算”的問題,這一年阿里啟動了“云梯計劃”,最后成長為阿里云這棵參天大樹。差不多同一時間,百度也在進行對分布式的研發(fā)。

筆者曾采訪過曾任騰訊大數據負責人的劉煜宏(現在已經是騰訊云副總裁、騰訊數據平臺部副總經理),他在2005年就加入了騰訊,還清楚地記得,當時騰訊使用國外廠商的“盒子”,每次發(fā)生宕機事故,只能等對方的技術人員來解決,而且恢復時間漫長。

更大的問題,是越來越無法滿足騰訊對大數據處理的需求?!昂芏鄶祿覀兣懿怀鰜恚热鏠Q用戶畫像,3個月跑一次都跑不出來。”劉煜宏說。無論是從價格,還是從實際需求來看,對當時的騰訊來說,尋找新的解決方案是必須要做的事情,問題只有一個——怎么做?

2009年1月,騰訊開始搭建第一個Hadoop集群,只有30臺服務器,業(yè)務最初拿來試水的業(yè)務是QQ藍鉆,遷移后對效率的提升顯而易見,只需要30分鐘,就能完成對月度數據的分析。幾個月后,湯道生(現任騰訊高級執(zhí)行副總裁、云與智慧產業(yè)事業(yè)群總裁)將《開心農場》(后改名《QQ農場》)引入QQ空間,這后來成為了中國互聯網史上最瘋狂的增長之一。5月22日,游戲上線的當天,游戲開發(fā)公司“五分鐘”的服務器就被流量擠爆,不得不將服務器的管理權限讓渡給騰訊,而騰訊面對每天高達100萬的用戶增長,也只能一次次增加服務器,并隨時面臨爆棚的危險。

據當時主管后臺的盧山(現任騰訊高級執(zhí)行副總裁、技術工程事業(yè)群總裁)透露,在2009年的下半年,最后追加給《QQ農場》的服務器超過了4000臺?!澳鞘且粋€不可思議的數字,也許在很長的時間里,都不會被打破。”湯道生這樣評價。受益于此,2010年騰訊的半年利潤一舉超過阿里、百度、新浪和搜狐的總和,但另一方面,劉煜宏等技術人員也意識到,傳統(tǒng)的數倉已經難以支持騰訊業(yè)務的發(fā)展,轉向分布式計算勢在必行。

《QQ農場》?圖片來源:網絡

不過直到2012年時,騰訊大部分業(yè)務還跑在傳統(tǒng)數據庫上,Hadoop的集群只有幾十臺規(guī)模。對此,筆者曾思考過,也許,可能是那時候的騰訊處于業(yè)務快速擴張期,對技術相對忽視了。總之,蔣杰(現任騰訊副總裁、騰訊數據平臺部總經理)來到騰訊時,一番摸底考查下來,他對騰訊大數據的判斷是:比阿里要落后三年左右。

在這之前,蔣杰在阿里呆了五年,也是阿里最早做大數據的那批人,云梯1隊的成員。阿里云的“云梯之爭”最終的獲勝者是從零開始自研“飛天”云梯2隊,但這場勝利卻是王堅“欽點”的,2隊在得到全集團技術資源的支持后成功突破了“5K”(調度 5000 臺服務器)的瓶頸。

一度領先的云梯1隊其實曾經率先實現4000臺的集群調度,當時云梯2隊還卡在1500臺左右,但阿里云的工程師判斷,Hadoop 在從4000臺到5000臺的過程中,將遇到難以克服的障礙,原因是受端口數量限制,萬兆交換機下面實際最多分出2200臺二級交換機,再加一層就是4400臺。不過這個判斷后來被證明并不準確,因為百度在2013年時,上線了1.3萬臺的Hadoop單集群,這也是當時世界上公開最大的Hadoop集群。

在蔣杰到來之前,騰訊大數據的實力與BA有著明顯差距。2012年底,騰訊大數據的單集群規(guī)模突破了4400臺,基本實現了從關系型數據庫到自建大數據平臺的全面遷移,2013年2月,傳統(tǒng)數據庫在騰訊全部下線。

不過隨著互聯網流量流向移動端,個性化內容推薦的模式異軍突起,騰訊數據量爆發(fā)式增長,業(yè)務部門對數據處理速度和及時性的要求也更“快”,?有時候上線了某個業(yè)務或手游,5分鐘后總辦的領導就會去問運營數據,Hadoop離線計算剛建成就要落伍了。

真如逆水行舟一般,不進則退。

2014年9月,騰訊大數據在單集群達到8800臺后,開始正式轉向實時計算的Spark & Storm體系,并結合騰訊的需求對核心組件進行重寫。到2015年2月,騰訊對外宣布其Spark集群規(guī)模成為全球第一,筆者在采訪蔣杰時,他曾提到,這一年對他還有另外的紀念意義,意味著騰訊在大數據領域的技術水平,正式躋身國內第一梯隊。

在大數據領域,騰訊還有許多故事可講,比如之后通過機器學習解決廣告業(yè)務的個性化推薦問題等,不過從時間上來說,這時候該講另一件事情了,也是筆者覺得更重要,也更能體現科技價值的“開源”。

開源時代

2011年,“軟件正在吞噬世界”的說法被提出,到了2015年,《福布斯》《連線》等媒體進一步認為,開源正在吞噬軟件。而到了現在,很多人更直接地表示,開源正在吞噬世界。

很遺憾,中國的科技公司又慢了一拍。

這里說的慢了一拍,不是對開源軟件的使用,實際上,中國的科技公司對使用開源軟件還是很積極的,但對做開源貢獻,往往就敬謝不敏了。上文有關大數據的討論,提到的分布式計算框架Hadoop,就是由Apache基金會開發(fā)的開源項目,也是當時互聯網公司替代傳統(tǒng)數據庫的主流方案。

之后替換Hadoop的分布式內存計算框架Spark,同樣是Apache軟件基金會旗下的頂級開源項目,在數據處理環(huán)節(jié)上全面優(yōu)于MapReduce(MapReduce可以看作是Hadoop的組成之一),而Storm可以簡單理解為實時計算版的Hadoop,可以說,騰訊的發(fā)展極大受益于開源軟件。

而騰訊對待開源的態(tài)度,用后來騰訊開源負責人許勇曾經的話來說:“2010年前其實騰訊起碼技術上是挺封閉的?!蹦菚r騰訊內部“數據孤島”的現象很嚴重,由于沒有統(tǒng)一的開發(fā)框架,每個業(yè)務團隊又都有自己的開發(fā)習慣和開發(fā)語言,讓開發(fā)協作出現了許多問題。不同語言之間的通信適配非常繁重,不同團隊會重復實現一樣的功能組件,而且代碼質量參差不齊——有些團隊沒有實現業(yè)務容災,有些團隊為了快速上線,直接寫死IP在代碼中,甚至有的后臺開發(fā)團隊沒有平臺建設人員,操作都需要登錄服務器,乃至造成誤操作。

身為資深程序員的馬化騰對內部的問題也心知肚明,2010年4月22日,在騰訊戰(zhàn)略管理大會上,馬化騰提出對內“各業(yè)務單元需建立新的協作機制,靈活機動打破‘部門墻’”,騰訊也開始試水對內開源。在2010年到2015年之間,對內開源一定程度上讓騰訊減少了內耗,但在對外開源上,騰訊還是相當謹慎和敏感,曾經一位騰訊程序員對筆者表示:“如果對外開源,要經過層層審批,假如一個開發(fā)把自己寫的部分代碼開源了,結果忘了里面有一些內網的東西,那就完蛋了?!?

一直到2016年,騰訊才開始低調地將開源項目開始在Github上公布,2017年,騰訊開源的項目數增長到近20個,之后開源項目數量快速增長。

2018年6月25日的LC3(LinuxCon + ContainerCon + CloudOpen)中國2018大會,騰訊宣布將自研開源項目TARS貢獻給Linux基金會,并正式成為Linux基金會白金會員,圖上為Linux基金會執(zhí)行董事Jim Zemlin(左)與騰訊副總裁曾宇(右)??圖片來源:騰訊

但對當時騰訊內部的技術氛圍是否足夠開放,筆者還是持一定懷疑態(tài)度的,因為2018年,還有騰訊的新員工在內網吐槽:“來到騰訊就像來到技術沙漠。”騰訊對開源態(tài)度轉變的關鍵節(jié)點,應該是在2018年的夏末秋初,在三天三夜的“香港會議”上,盧山(現任騰訊高級執(zhí)行副總裁、技術工程事業(yè)群總裁)提出了“開源協同”,之后在2018年9月30日,騰訊啟動戰(zhàn)略升級,成立六大事業(yè)群,即“930變革”。2019年1月,騰訊正式組建技術委員會,由盧山和湯道生牽頭,“開源協同”成為了技術委員會兩大重要戰(zhàn)略之一,之后騰訊的內外開源進一步走上了快車道。

講個有意思的事情,上文提到,騰訊希望機器學習解決廣告業(yè)務的個性化推薦問題,但當時業(yè)界的重點基本是放在圖像識別、語音識別等領域,開源的機器學習和深度學習平臺如TensorFlow、Pytorch等,也并不太適應騰訊的業(yè)務需求。

于是在2015年,騰訊聯合北京大學共同研發(fā)了Angel項目——假如當時有合適的開源軟件,可能這個項目并不會誕生——這個項目可以說是為騰訊的業(yè)務量身打造的,本質上是一個大規(guī)模、分布式的機器學習平臺,架構核心是高性能參數服務器,聚焦在稀疏數據和高維模型領域,與騰訊的業(yè)務息息相關,比如推薦模型(可用于商品廣告推薦)和圖網絡模型(可用于社交網絡分析)。

而這個項目,在2017年正式對外開源,然后被大量的公司和機構使用,其中包括華為、 小米、滴滴等互聯網大公司,并在2018年進入LF AI基金會孵化。2019年12月19日,Angel成功從LF AI基金會畢業(yè),這也是中國首個成功畢業(yè)的項目,目前在Github獲星6500+??梢哉f,在這個項目上,騰訊貫徹了開源的精神,也值得業(yè)界的尊敬。

Github上對Angel的簡介??圖片來源:Github

在中國,開源曾被長期忽視,但開源社區(qū)在的影響正與日俱增,即使是科技巨頭也要承認,一個受歡迎的項目,通過開源接受全社區(qū)的檢驗和評價,以及優(yōu)秀開發(fā)者對其的完善,得到的提升長期來看要快于內部的研發(fā),并且有利于在更大范圍內形成技術生態(tài)。

近年來中國科技企業(yè)也紛紛加大了開源的力度,比如華為的鴻蒙、百度的飛槳等,騰訊近兩年的開源貢獻,在全球企業(yè)中位居前十。如果我們領先的科技企業(yè)都愿意貢獻更多到開源領域,那將是一件值得自豪,也能為世界貢獻更多科技價值的事情。

好了,我們先將開源的話題放下,回過頭來聊文章開頭說的事情。

云原生時代

在香港會議上,盧山提出了“開源協同”的建議,而湯道生則提出了“自研上云”的建議,這兩個建議,也是騰訊技術委員會的兩大重要戰(zhàn)略。自研上云,顧名思義,主要是將騰訊集團內部的海量自研業(yè)務,包括社交、游戲、內容等業(yè)務搬上云端。

時至今日,云計算的意義已經無需贅言了,業(yè)務上云也是理所當然——騰訊自己就有云,沒道理不用啊。

不過具體上云要上到什么程度?據騰訊對披露的信息,當時騰訊內部其實也分成了兩派,其中一派認為,騰訊各大事業(yè)群(BG)應該使用云上的虛擬機,但架構還是用各業(yè)務自己的,簡單點理解,就是IaaS層上云。

如果只是這樣,那么這篇文章其實沒有寫的必要了,無非是騰訊云多了一些內部客戶。

另一派的看法是,IaaS層要上云,各BG的PaaS也要上云并統(tǒng)一。騰訊以“賽馬機制”出名,也借此做出了不少優(yōu)秀的產品,但相互間的隔離也成了痼疾(不然也不必“開源協同”和“自研上云”了),再進一步,就會有一個很現實的問題:當時騰訊每個BG都有各自PaaS平臺,有基于開源的,有基于自研的,并且調度技術都是和各自業(yè)務磨合好了的,如果強行統(tǒng)一,業(yè)務部門一定會反彈。

這個問題其實在阿里巴巴也出現過,當初阿里在內部推廣阿里云,投訴像雪花般紛至沓來絕不夸張,王堅被說成騙子,在臺上泣不成聲也不止一次。哪怕是后來執(zhí)掌阿里云的胡曉明,在聽說自己的業(yè)務要上阿里云(那時他在螞蟻金服),他也很不情愿(事實證明后來的確出了很多問題)。

實際上,雖然2019年1月技術委員會就成立了,但從2月到4月,騰訊總辦還在不停討論如何上云。在盧山、湯道生等的堅持下,騰訊最后確定,自研上云不僅要使用云上虛擬機,而且要擁抱最新的云原生技術,將資源統(tǒng)一調度。

這個結果用一句話來描述,就是“風物長宜放眼量”。

雖然有爭論,但對云原生是大勢所趨,大家卻是沒有異議的。云原生(CloudNative)是一個組合詞:Cloud+Native。Cloud表示應用程序位于云中,不是傳統(tǒng)的數據中心;Native表示應用程序從設計之初即考慮到云的環(huán)境,為云而設計,能夠充分發(fā)揮云平臺的“彈性+分布式”的優(yōu)勢。

這個概念也在不斷演化,2015年云原生計算基金會(CNCF)成立,最初把云原生定義為“容器化封裝+自動化管理+面向微服務”;2018年,CNCF又將服務網格(Service Mesh)和聲明式API給加了進來??傊?,在2019年,理念上的統(tǒng)一并不是問題,問題只在于執(zhí)行。

從目標來看,騰訊的全面上云是想要借助云原生,尤其是容器、微服務、DevOps的能力,構建面向未來的技術架構,打破部門墻和重復造輪子現象,加強基礎研發(fā),提高公司的技術資源利用效率。另一方面,這個過程中積累的云產品、技術未來也通過騰訊云對外輸出。

實際中,用哪個BG的調度技術,首先就成為擺在騰訊各個技術運營部面前的難題。為此,騰訊內部展開了激烈的PK,也調研了很多云原生技術,最終確定了基于內部開源協同的K8S能力來構建統(tǒng)一的技術底座,在此之上使用騰訊云TKE來構建每個BG自身的業(yè)務運維發(fā)布平臺。騰訊云TKE即騰訊云上的容器服務(Tencent Kubernetes Engine,TKE),基于 Kubernetes 提供以容器為核心的解決方案。當時騰訊云容器產品中心總監(jiān)鄒輝在運營管理大會上,向每個BG匯報方案,最終達成一致:代碼上開源協同,資源上在騰訊云統(tǒng)一,運營上各個BG獨立。

2019年騰訊啟動上云,主要是主機上云,2020年全面啟動容器化改造,這個過程中就出現了不少“幺蛾子”。

比如騰訊平臺與內容事業(yè)群(PCG),提出了不少“不可思議”的要求,像創(chuàng)建集群的接口要支持指定的各種參數,數量多到以至于騰訊云的負責團隊懷疑對方“想把我們TKE當成一個空殼,只是把集群買完之后,指定完這個參數,還要自己閉環(huán)干這個事情”(來自騰訊提供的采訪記錄)。事實證明無論內部還是外部客戶,都確實有這個需求,這個需求后來演變成了TKE的兩個產品能力——TKE獨立集群和TKE自定義參數。

還有騰訊互動娛樂事業(yè)群(IEG),因為很多業(yè)務要遷移到云上,要求TKE支持固定IP。這個需求,說實話挺不“云原生”的,因為嚴格意義上真正的云原生是不支持固定IP的。于是雙方進行了多次“PK”,最后在IEG表示不支持的話,業(yè)務就不能上云后,騰訊云的團隊只好推出了一個新特性——容器支持固定IP,結果沒想到,這個特性之后在外部客戶中也大受歡迎,成為騰訊云的一個“獨家利器”。

其間也有碰了“一鼻子灰”的事情,曾經有個重要的游戲上線,結果晚上高峰期做活動時,有兩個小時非???,當時騰訊內部論壇上有不少“騰訊云不行”、“騰訊云垃圾”、“原來挺好的,非要搞上云”之類的吐槽,這個事情鬧出來之后,直接捅到總辦,一度搞得他們壓力很大。事后總結,雙方團隊發(fā)現,是評估計算資源時,應該用高主頻服務器,卻用了普通服務器,到了高峰期算力就扛不住了。

不過,上云整體的進展還算順利,在推進節(jié)奏上,騰訊云的團隊注意“抓大頭”,先啃最難啃的骨頭,比如QQ是騰訊首個全面上云的內部業(yè)務,而且過程中用戶零感知。騰訊從QQ開始,上云也以QQ開始,不得不說是個有趣的輪回。

對于IEG的游戲,就先讓最熱門游戲上云,這樣其他觀望的腰部業(yè)務看到沒問題后,基本就會選擇跟進。在業(yè)務切換的過程中,騰訊云的團隊還要負責保駕護航,當時每當《王者榮耀》推出一個活動,他們就會提前去梳理可能的風險和問題。至于像騰訊會議、視頻號這樣的新業(yè)務,更是一開始便是云原生的。

騰訊云副總裁徐勇州在采訪中回憶,2019年在騰訊內部的樂問平臺上,對為什么上云的討論還有不少,到2021年,基本就不再質疑了,TKE的核心量一年之內增長了將近4倍?!罢w的業(yè)務負載,三年前大概是在30%的水平,但是今天,基于云原生帶來的調度以及遷移的能力,集群負載提升到45%,在離線業(yè)務混部集群的負載更是到了65%這樣一個相對比較高的水準,業(yè)界做得好的也就是北美有做到50%左右。”徐勇州總結說。

其實騰訊主要業(yè)務的全面上云在2021年就基本完成,只有有些業(yè)務在等待服務器的逐步替換。根據騰訊的統(tǒng)計,騰訊云TKE擁有目前國內最大規(guī)模的Kubernetes集群,相對于自研上云前,云服務器相對物理服務器性能損耗下降到0,CBS的存儲性能提升13倍,網絡的包轉發(fā)能力提升7.6倍,TKE的在離線業(yè)務混部能力使服務器資源利用率從30%提升至65%。同時,自研業(yè)務上云過程中,還有將近100項成果復用到公有云。

這的確也是一個里程碑式的事件。

從2009年到2022年,中國互聯網也經歷了PC互聯網、移動互聯網和產業(yè)互聯網三個不同的階段,從底層技術到表層的商業(yè)模式都在發(fā)生著改變。2009年,創(chuàng)業(yè)公司“五分鐘”因為無力提供《開心農場》所需的算力,不得不以幾百萬的價格就賣掉了游戲在騰訊平臺的使用權,并在2012年末破產。2011年,比微信提前上線一個月前的米聊,在用戶增長最快、競爭最激烈的時候,因為服務器和后臺架構的缺陷,出現了五次宕機,不得不主動退出了競爭。2018年9月,如日中天的騰訊在股價接連下跌之后,自我革命,走向了“開源協同”和“自研上云”的道路。

我們看到中國互聯網商業(yè)模式創(chuàng)新的威力,已經大幅讓步給科技的進步,以往看不見的冰山,正逐漸浮出海面。文中提到的一些技術也許快成為明日黃花,但開源和云原生,還有更多文中沒提到的前沿科技領域,卻仍是方興未艾,而這也將會是未來科技公司的競爭力所在。

額外講一件事情,自2019年,金融科技及企業(yè)服務營收規(guī)模正式披露以來,其單季度營收規(guī)模已經翻了一番。2021年Q4,騰訊的金融科技與企業(yè)服務收入達到479.58億元,首次超過游戲收入,占總營收比例升至33.26%。從騰訊的變化我們能看到,做研發(fā)搞技術,不止能省錢,也真的能掙到錢,而且比單純掙錢更有趣和讓人有敬意。

也希望這樣有趣的好故事,能在更多中國公司內上演。

參考資料:

吳曉波《騰訊傳》

淺黑科技《阿里云的這群瘋子》

極客網企業(yè)會員

免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。

2022-06-24
騰訊底層技術進化史 | 科技前沿
關鍵詞:大數據、開源、全面上云

長按掃碼 閱讀全文