前段時間,Oracle正式發(fā)布了JDK 15,同時作為慣例公布了OpenJDK全球貢獻(xiàn)者榜單,表達(dá)了對這些企業(yè)與個人開發(fā)者的感謝。其中,Oracle依舊是JDK開發(fā)的主力軍,完成了79.68%的工作量。
但令很多人意想不到是,騰訊成為了全球企業(yè)貢獻(xiàn)第五名,是國內(nèi)為OpenJDK貢獻(xiàn)最多的公司,并且是歷史首個進(jìn)入“Notable”貢獻(xiàn)者范圍的國內(nèi)廠商,得到了Oracle的點(diǎn)名感謝。
談到國內(nèi)大廠的開源,社區(qū)中仍然存在不少的偏見。大廠的開源工作究竟是不是為了KPI?除了商業(yè)價值外,大廠的開源工作是否真正為開源社區(qū)帶來了有意義的貢獻(xiàn)?
為了探究騰訊內(nèi)部真實(shí)的開源情況,以及這些年來騰訊對開源社區(qū)的實(shí)質(zhì)性貢獻(xiàn),我們邀請到了騰訊云副總裁、騰訊數(shù)據(jù)平臺部總經(jīng)理蔣杰,騰訊云大數(shù)據(jù)團(tuán)隊高級技術(shù)專家、OpenJDK committer楊曉峰,騰訊技術(shù)委員會對外開源管理辦公室總監(jiān)許勇,一起深入探討了騰訊內(nèi)部開源文化的變遷史,獲悉了以騰訊云大數(shù)據(jù)團(tuán)隊為代表的騰訊技術(shù)人,一些鮮為人知的開源故事。
OpenJDK的突出貢獻(xiàn)者
楊曉峰告訴我們,騰訊云大數(shù)據(jù)團(tuán)隊自2019年以來就一直在積極參與OpenJDK開源生態(tài)的貢獻(xiàn)。
去年11月,騰訊開源內(nèi)部使用的JDK,并命名為Tencent Kona JDK,其定位是一款免費(fèi)、開箱即用、經(jīng)過騰訊規(guī)模生產(chǎn)驗證的JDK發(fā)行版,為大家提供在數(shù)據(jù)科學(xué)和云原生領(lǐng)域的最佳產(chǎn)品體驗。
據(jù)介紹,Kona JDK基于OpenJDK主分支定制,針對大數(shù)據(jù)和云計算等場景需求,引入了JDK 11的特性,能夠幫助用戶無感知的使用共享核心類信息來提高啟動速度,在云場景下JVM的啟動速度最高能夠提升到40%左右。為了增強(qiáng)線上診斷的能力,騰訊Kona JDK還引入了JFR等功能,可以幫助java用戶獲得從系統(tǒng)到應(yīng)用的profiling信息,增強(qiáng)運(yùn)行時診斷以及熱點(diǎn)分析,指導(dǎo)優(yōu)化,并陸續(xù)在后續(xù)版本更新中開源了GC等模塊的多個自研特性。
Kona JDK主要由來自騰訊云大數(shù)據(jù)團(tuán)隊的OpenJDK社區(qū)資深參與者負(fù)責(zé)研發(fā)和維護(hù),該團(tuán)隊一直以來都在積極回饋OpenJDK社區(qū)。在今年3月JDK 14發(fā)布時,騰訊就進(jìn)入了OpenJDK全球突出貢獻(xiàn)者名單。
公開數(shù)據(jù)顯示,短短不到一年,騰訊云大數(shù)據(jù)團(tuán)隊已向OpenJDK社區(qū)貢獻(xiàn)了50+commits,很多commits與騰訊自身在海量大數(shù)據(jù)生產(chǎn)負(fù)載技術(shù)方面的經(jīng)驗相關(guān),其中針對Vector API向量計算、Loom協(xié)程、ZGC等方面的改進(jìn),是業(yè)界少有的生產(chǎn)級別前沿實(shí)踐,為OpenJDK社區(qū)做出了十分有價值的貢獻(xiàn)。
亮眼的開源答卷
長久以來,由于在社交、游戲等領(lǐng)域的業(yè)務(wù)特色過于鮮明,導(dǎo)致很多人忽略了騰訊的技術(shù)價值,尤其是在開源領(lǐng)域的貢獻(xiàn)。以騰訊云大數(shù)據(jù)團(tuán)隊為例,除了積極參與OpenJDK社區(qū)以外,騰訊近年來在開源領(lǐng)域的貢獻(xiàn)著實(shí)不少。
從2014年開始,騰訊即開始將內(nèi)部的第一代大數(shù)據(jù)平臺核心即騰訊版的Hive進(jìn)行了開源。2017年,騰訊又把基于AI技術(shù)的第三代大數(shù)據(jù)平臺的核心Angel開源,并將該項目捐贈給了Linux基金會旗下專注人工智能的LF AI基金會,支持推動該項目順利成為基金會畢業(yè)項目。
去年11月,騰訊除了Kona JDK外同期宣布開源的項目還有另外三個,分別是分布式消息中間件TubeMQ、分布式HTAP數(shù)據(jù)庫TBase以及企業(yè)級K8s發(fā)行版TKEStack。
其中,TubeMQ項目是騰訊云大數(shù)據(jù)從7年前起開始研發(fā)的一款分布式消息中間件,支撐了騰訊QQ、微信等應(yīng)用的海量數(shù)據(jù)業(yè)務(wù),目前每天支撐的數(shù)據(jù)量超過30萬億條。TubeMQ可支持?jǐn)?shù)據(jù)的高性能存儲與傳輸,吞吐率高,延遲可低至5ms。目前,TubeMQ已經(jīng)捐贈給Apache基金會,被ASF正式接受為孵化級項目。
TBase則是騰訊基于PostgreSQL開發(fā)的分布式HTAP數(shù)據(jù)庫。該數(shù)據(jù)庫具備高性能可擴(kuò)展的分布式事務(wù)能力,支持RC和RR兩種隔離級別,通過安全、管理、審計三權(quán)分立體系,提供全方位的數(shù)據(jù)安全保證機(jī)制。性能方面支持高性能分區(qū)表,可使得數(shù)據(jù)檢索效率成倍提升。在兼容SQL 2003標(biāo)準(zhǔn)、PostgreSQL語法和常用Oracle函數(shù)&數(shù)據(jù)類型、窗口函數(shù)等基礎(chǔ)上,額外提供大小商戶數(shù)據(jù)分離、冷熱數(shù)據(jù)分離等高效的數(shù)據(jù)治理能力。
TKEStack是騰訊將內(nèi)部的容器編排平臺基礎(chǔ)上改進(jìn)推出的K8s發(fā)行版。該平臺面向離線業(yè)務(wù)、在線業(yè)務(wù)混部的業(yè)務(wù)場景,能夠穩(wěn)定地管理萬級別的Kubernetes集群,并且提供全方位的資源管控,解決網(wǎng)絡(luò)帶寬控制、磁盤IO等難題。同時TKEStack還擁有騰訊創(chuàng)新的GPU虛擬化技術(shù)包括對GPU調(diào)度的改進(jìn)。
除了將技術(shù)對外開源之外,騰訊云大數(shù)據(jù)團(tuán)隊還以貢獻(xiàn)代碼的方式投入到開源社區(qū)建設(shè)中。今年9月,Apache Hadoop社區(qū)發(fā)布新一代分布式存儲系統(tǒng)Ozone 1.0.0,該項目解決了Hadoop分布式文件系統(tǒng)在可擴(kuò)展性上的缺陷,能夠滿足千億級小文件的存儲需求。隨著1.0.0的發(fā)布,騰訊也參與和見證了Ozone從Apache Hadoop社區(qū)孵化,到經(jīng)ASF董事會的批準(zhǔn),直至正式成為一個Apache頂級開源項目的過程。騰訊云大數(shù)據(jù)Ozone項目技術(shù)負(fù)責(zé)人,被社區(qū)推選為Apache Ozone首位項目主席(Chair),同時項目團(tuán)隊誕生了多位PMC成員和committer,帶領(lǐng)社區(qū)一起把Ozone打造成下一代大數(shù)據(jù)存儲系統(tǒng)。
值得一提的是,在大數(shù)據(jù)開源領(lǐng)域的突出表現(xiàn)并非個例,根據(jù)騰訊開源主頁的統(tǒng)計信息顯示,目前由騰訊主導(dǎo)的開源項目倉庫共有112個,代碼貢獻(xiàn)者1801人,項目fork總數(shù)超過67萬,star總數(shù)超過33萬。騰訊公司也已經(jīng)成為Apache基金會、Linux基金會以及Openstack基金會的白金贊助商,同時還是國內(nèi)首個開源基金會——開放原子開源基金會的聯(lián)合發(fā)起企業(yè)之一。
擁抱開源的技術(shù)路線
騰訊云大數(shù)據(jù)的開源生態(tài)發(fā)展到今天,并不是一蹴而就的事情。
在2009年之前,騰訊與很多其他傳統(tǒng)互聯(lián)網(wǎng)公司一樣,內(nèi)部業(yè)務(wù)主要使用傳統(tǒng)的關(guān)系型數(shù)據(jù)庫。2009年開始,隨著互聯(lián)網(wǎng)流量的爆發(fā),傳統(tǒng)的單機(jī)數(shù)據(jù)庫所提供的服務(wù)在系統(tǒng)可擴(kuò)展性、性價比方面已不再適用騰訊業(yè)務(wù)爆發(fā)式的增長。面對這種變化,騰訊云大數(shù)據(jù)轉(zhuǎn)向基于開源的分布式Hadoop體系,構(gòu)建了騰訊的第一代大數(shù)據(jù)平臺。
2011年末,堅信開源就是未來的大數(shù)據(jù)技術(shù)專家,現(xiàn)任騰訊云副總裁、騰訊數(shù)據(jù)平臺部總經(jīng)理蔣杰來到騰訊,據(jù)蔣杰回憶,他剛剛來到騰訊時,騰訊云數(shù)據(jù)中心的Hadoop集群剛剛起步,規(guī)模只有200臺。
由于開源社區(qū)具備支持力強(qiáng),會不斷引進(jìn)創(chuàng)新,始終處于技術(shù)發(fā)展的前沿,在生態(tài)以及人才方面具有不可比擬的優(yōu)勢,所以騰訊云大數(shù)據(jù)團(tuán)隊堅定選擇了擁抱開源的路線。
蔣杰和騰訊云大數(shù)據(jù)團(tuán)隊基于開源軟件,不斷建設(shè)各種組件,從Hadoop基礎(chǔ)存儲HDFS開始,到改造NameNode,改造MR的整個調(diào)度。之后又進(jìn)入移動互聯(lián)網(wǎng)時代,團(tuán)隊又從Hadoop轉(zhuǎn)向Spark和Storm體系,建立消息中間件,構(gòu)建企業(yè)級的實(shí)時數(shù)據(jù)分析體系。
2015年左右開始,隨著人工智能、數(shù)據(jù)挖掘、數(shù)據(jù)應(yīng)用等前沿技術(shù)的深入,騰訊云大數(shù)據(jù)再次迭代。蔣杰帶領(lǐng)技術(shù)團(tuán)隊與北京大學(xué)崔斌老師團(tuán)隊合作,于2016年推出了自研機(jī)器學(xué)習(xí)平臺Angel,并在2017年將其開源。Angel項目專攻復(fù)雜計算場景,可進(jìn)行大規(guī)模的數(shù)據(jù)訓(xùn)練,支撐內(nèi)容推薦、廣告推薦等AI應(yīng)用場景。該項目不僅支撐了騰訊自身業(yè)務(wù)需求,在行業(yè)上也具有里程碑意義。
在這些崇尚開源的技術(shù)人的努力下,騰訊云多年來以開源軟件為基礎(chǔ),對內(nèi)部大數(shù)據(jù)相關(guān)的底層技術(shù)棧不斷進(jìn)行大規(guī)模地改造,順利頂住了不同時期數(shù)據(jù)流量爆發(fā)式增長帶來的挑戰(zhàn)。
沒有KPI,興趣就是最大的驅(qū)動力
幾乎與騰訊云大數(shù)據(jù)確立基于開源的技術(shù)路線同一個時期,騰訊內(nèi)部的開源文化也正在悄然興起。
負(fù)責(zé)騰訊對外開源辦公室的管理工作,以及騰訊內(nèi)部研發(fā)工具和技術(shù)社區(qū)建設(shè)的許勇告訴我們,在開源成為公司層面的戰(zhàn)略之前,騰訊內(nèi)部的開源文化最早是從內(nèi)部的代碼復(fù)用開始,由基層的開發(fā)者們自發(fā)組織起來的。
2013年,騰訊內(nèi)部以提高開發(fā)效率為目的,開始倡導(dǎo)用公共組件的形式來共享和復(fù)用代碼,涌現(xiàn)出了非常多的內(nèi)部優(yōu)質(zhì)組件。為鼓勵更多人參與進(jìn)來,騰訊特別設(shè)置了代碼文化獎,每兩個月組織一次內(nèi)部開源項目評選活動。評選完全由程序員們自己說了算,一票一票真實(shí)選舉產(chǎn)生。獲獎的員工和團(tuán)隊通過直播的形式被更多開發(fā)人員了解,讓開源成為騰訊內(nèi)部熱議的話題。
許勇回憶,有時在直播過程中會發(fā)現(xiàn)一些平時不善言辭的程序員,當(dāng)他們提到自己的開源項目時卻滔滔不絕,眼中閃爍著光芒,“沒有KPI,興趣就是最大的驅(qū)動力?!彬v訊代碼文化獎作為騰訊代碼文化的經(jīng)典項目也一直延續(xù)到了現(xiàn)在。
把代碼貢獻(xiàn)出去,把口碑做出來
據(jù)許勇回憶,在公司層面,嘗試過很多有意思的“小手段”用于激勵開源,他還給我們講了一個騰訊程序員熱衷于搶開源紅包的故事。
大家知道每逢節(jié)日發(fā)微信紅包搶微信紅包已成為一種深入人心的習(xí)慣,在騰訊內(nèi)部,還有一種“企業(yè)微信開源定制紅包”,是用于提醒和鼓勵開源項目的開發(fā)者和貢獻(xiàn)者,用這種極具廣東地方特色的方式(廣東搶利是)來激勵開源項目團(tuán)隊、提升項目社區(qū)活躍度。
“比如新開源項目一個月積累到500個star,我們就給負(fù)責(zé)人發(fā)放一個開源新秀紅包,恭喜他達(dá)到了一個小小里程碑;每個月社區(qū)活躍度TOP 10的項目我們會發(fā)開源活躍紅包;榮登GitHub日榜周榜或者有其他突出表現(xiàn)會發(fā)開源突出紅包等等。來自不同業(yè)務(wù)線的開發(fā)者和貢獻(xiàn)者們開心搶著紅包,在線上一起分享項目達(dá)成一個又一個小小里程碑,是一件非常有騰訊特色、有意義的事情?!?/span>
在騰訊云大數(shù)據(jù)團(tuán)隊基于開源軟件一路進(jìn)行技術(shù)變革的過程中,團(tuán)隊成員們也意識到,開源不是一味地從中索取,只有積極回饋開源社區(qū),才能促使整個開源生態(tài)良性發(fā)展。
騰訊大數(shù)據(jù)團(tuán)隊開始時是把一些改進(jìn)后的優(yōu)質(zhì)代碼回饋開源社區(qū)。再后來,騰訊內(nèi)部的開源氛圍也逐步成熟,騰訊大數(shù)據(jù)團(tuán)隊就索性直接將改進(jìn)后的分支項目整個對外開源,主導(dǎo)建立開源社區(qū)。比如Angel平臺在立項之初就已經(jīng)決定要做成開源的項目。
蔣杰坦言,由于Angel團(tuán)隊成員都是技術(shù)出身,初心非常單純,只想著把自己的代碼貢獻(xiàn)出去,讓大家一起來把東西做好。
在將Angel項目開源以后,包括華為、新浪、OPPO、VIVO、拼多多在內(nèi)的國內(nèi)大廠都慢慢開始在內(nèi)部采用該系統(tǒng),項目社區(qū)也不斷地得到來自這些大廠開發(fā)人員的貢獻(xiàn),這個過程給騰訊云大數(shù)據(jù)團(tuán)隊帶來了很多信心與成就感。
談到做開源給公司帶來的利益,蔣杰認(rèn)為,僅從對技術(shù)人才的吸引方面,做開源就是有很大價值的?!叭绻_源的東西多了,對于一個開發(fā)者來說,比如他在大學(xué)時都聽到過Angel,并且他的老師或者他身邊的人都在用這個東西,甚至他也親自去用過,這對他的影響可能是非常大的。同時,對于比較成熟的技術(shù)人才來說,如果他對新技術(shù)有追求,那么看到我們這樣有前瞻性的項目,可能他也會想加入。另外,我們也會吸引到開源社區(qū)中跟我們有一樣興趣愛好的人,他們也會愿意來加入我們?!?/span>
蔣杰透露,騰訊云大數(shù)據(jù)團(tuán)隊依靠開源口碑,在Spark、Flink、Hadoop社區(qū)都吸納了一些優(yōu)秀的貢獻(xiàn)者,到目前為止有接近10個PMC,20個Committer加入了他們的團(tuán)隊。
耿直的開源態(tài)度
2018年9月,騰訊內(nèi)部進(jìn)行了名為930變革的組織架構(gòu)調(diào)整,成立了開源協(xié)同項目組和對外開源管理辦公室,正式將開源提升到公司戰(zhàn)略層面。
在當(dāng)時,包括OSC社區(qū)在內(nèi)的很多網(wǎng)友對此并不看好,紛紛留言建議騰訊“先在Linux上支持QQ和微信再說”。有趣的是,騰訊在不久之后就悄悄發(fā)布了Linux QQ 2.0 Beta。盡管距離Linux QQ上一次更新已經(jīng)過去了十年,讓很多社區(qū)的朋友直呼“活久見”,但還是有不少人認(rèn)可了騰訊對待開源的耿直態(tài)度。
這一時期,騰訊的開源不再局限于自發(fā)參與的開源愛好者。2019年1月,騰訊技術(shù)委員會成立,騰訊內(nèi)部的開源協(xié)同工作進(jìn)一步覆蓋到所有的技術(shù)部門,從而減少代碼的重復(fù)開發(fā),提升項目推進(jìn)效率。
技術(shù)交流的氛圍也更加活躍了。
在公司內(nèi)部,騰訊整體開發(fā)推進(jìn)工具平臺由SVN向更適合開源協(xié)同屬性的工蜂Git遷移。同時上線碼客社區(qū),每個月有超過98%的技術(shù)人員訪問碼客社區(qū)進(jìn)行技術(shù)討論。數(shù)據(jù)顯示,騰訊碼客社區(qū)已經(jīng)產(chǎn)生1.9萬個技術(shù)問題,平均收獲6.6個回答,所有技術(shù)問題在提出后24小時內(nèi)100%得到回答。開源協(xié)同的工作也在碼客社區(qū)中生根發(fā)芽,開源協(xié)同Oteam在碼客通過圈子運(yùn)營自己的開發(fā)者社區(qū),與協(xié)同開發(fā)者以及用戶共同討論項目進(jìn)展。開頭提到的OpenJDK的代碼貢獻(xiàn)正是源自O(shè)team協(xié)作的成果。
寫在最后
從各大開源基金會公開的數(shù)據(jù)來看,如今的騰訊已經(jīng)成為對開源社區(qū)貢獻(xiàn)最大的中國互聯(lián)網(wǎng)公司之一。
在騰訊的社交、游戲等現(xiàn)象級產(chǎn)品業(yè)務(wù)成功的背后,離不開像大數(shù)據(jù)團(tuán)隊這樣的騰訊底層基礎(chǔ)技術(shù)團(tuán)隊的支撐,更離不開團(tuán)隊多年來使用開源、貢獻(xiàn)開源的技術(shù)成果。通過與他們的溝通,我們了解到在騰訊內(nèi)部,確實(shí)有那么一群熱愛技術(shù)的人在認(rèn)真地做著開源,并且為開源社區(qū)貢獻(xiàn)了實(shí)實(shí)在在的、有價值的代碼,獲得了社區(qū)的認(rèn)可。
很多時候,人們常因不了解,對于國內(nèi)大廠的開源持質(zhì)疑態(tài)度,“大廠開源是為了KPI”也是一個社區(qū)中老生常談的話題。最后,我們想引用蔣杰此前在騰訊云一年一度的技術(shù)大會Techo上對于這個話題的回應(yīng)作為結(jié)尾:
“騰訊開源沒有具體的KPI,更多是通過代碼文化和工程師文化的建設(shè),來鼓勵和吸引大家主動參與到開源社區(qū)的建設(shè)中來,同時提供專業(yè)的技術(shù)指導(dǎo),為開源項目與團(tuán)隊的成功助力?!?/span>
我們也愿意相信,在這些認(rèn)真做開源的技術(shù)人的努力下,國內(nèi)的開源生態(tài)一定會變得越來越好。