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