騰訊開源之道:基於Apache之道的開源實踐與探索

語言: CN / TW / HK

8月6日,騰訊開源聯盟主席、騰訊雲開源生態總經理單致豪在2021 ApacheCon Asia上分享了騰訊對Apache之道的思考、探索與實踐的歷程。

作為開源界備受關注的會議之一,今年的ApacheCon Asia將持續3天,開設14+分論壇,內容覆蓋從大資料到搜尋再到訊息佇列等數十個不同類別。

Apache 軟體基金會成立於 1999 年,迄今為止其管理著 2.27 億多行程式碼,有著206個專案管理委員會,通過精英制領導了350多個 Apache 專案和計劃,有超過8,100+提交者。

從最初的“Apache小組”到如今成長為世界上最大的開源基金會之一,Apache通過其領導力、健全的社群、以及精英主義思路,鑄就了著名的“Apache之道”(Apache Way),形成了一套推進開源社群可持續發展、指導開源專案實踐的方法論。

騰訊開源自2010年起開始正式萌芽,在11年的發展歷程中,騰訊大批工程師通過參與、應用和貢獻等方式與Apache社群深度聯結,並基於Apache之道,踐行著騰訊的開源之道。

騰訊與Apache開源社群也持續深入合作,成為多個Apache專案的活躍貢獻者,以及國內首家Apache白金會員,並推動Apache基金會在開源領域的創新。目前,除了在Hadoop、Spark等眾多專案中擔任Committer外,騰訊的內部團隊還基於Apache中的如InLong、Ozone、Pulsar等專案實現了對業務的支撐和賦能,並形成了一套最佳實踐。

 Apache 之道對社群的重要指導

Apache之道是很難定義的,儘管Apache之道這些年修改了部分內容,但“高度透明性”的初心始終是未變的。在單致豪看來,騰訊從Apache之道中學習的經驗歸結為五條:

1所有個人都有機會參與,並且可以成為權威。所有人都可以通過對社群的貢獻獲得屬於自己的影響力和個人成長,以及基於公開獲得的功績和權威。

2Apache基金會是扁平的結構。這意味著任何角色都是平等的,投票權重都相同,並且貢獻是在志願者的基礎上進行,騰訊鼓勵內部的工程師都積極參與Apache基金會的貢獻中。

3深知開放交流的重要性並踐行。因為開源是全球分散式社群的協作,騰訊工程師參與Apache開源專案都是通過郵件列表的非同步協作機制——程式碼、決策相關的交流都公開透明。

4鼓勵一起達成共識的決策機制。共識可以保持專案前進動力和新的生產力。但是有時候不能建立完全共識,那就需要進行投票或其他協調以幫助刪除具有約束力的決定。

5、最重要的一點,“社群高於程式碼”的格言在 Apache 社群中經常得到加強。因為健康的社群比好的程式碼更重要。強大健康的社群總是可以糾正程式碼的問題,而不健康的社群可能會努力以可持續的方式維護程式碼庫。此外,靈活的重要性——這也是Apache 可持續開源成功不可或缺的一部分。

Apache之道指導下的騰訊開源之道

Apache 專案及其社群都是獨特但卻多樣化的。在社群主導的開發過程中,Apahce成員將其獲得經驗的總結體會凝聚為了Apache 之道。

其實,騰訊很多開源實踐、成果都是在Apache之道的指導下進行的。通過長時間的開源文化基因的沉澱,形成了騰訊以“開放協作、開源向善”為驅動的開源之道,同時這也是騰訊的價值觀及使命願景,連續影響著自身的開源實踐。

l 主導及捐贈開源專案,騰訊踐行 Apache Way之始

在大資料流計算、中介軟體等領域,騰訊工程師在 Apache 基金會中的多個開源專案參與了主導及貢獻,憑藉貢獻成果獲得了來自基金會的認可。

1)大資料領域

例如,從4年前開始,騰訊就相繼主導了 Apache Hadoop 2.8.4/2.8.5版本的釋出,Apache Ozone 1.0.0版本在Hadoop社群的正式釋出,後者成為了 Apache 基金會的頂級專案,同時也主導了Apache Spark 2.3.2版本的釋出,併成為第一家在社群裡釋出Hadoop和Spark Release的中國公司。

在騰訊主導釋出的Hadoop多個版本中,就涉及20多個的特性和優化。在 Spark 、Flink、HBase、Hive、MXNet、Parquet等多個計算和 AI 框架中,騰訊都是主要的核心貢獻者。

此外,騰訊大資料還參與主導了Apache Ozone 的1.0.0版本,並在支援Append、truncate操作,container balancer 功能等問題上,騰訊持續在投入貢獻以提升Ozone的成熟度。

2)中介軟體領域

2019年,騰訊將自研的萬億級大資料元件 —— TubeMQ 專案捐贈給了Apache基金會,這也是騰訊第一個捐贈到Apache基金會的開源專案,今年其正式更名為Apache InLong,目前正在Apache基金會進行孵化。

l 基於 Apache 優秀及成熟開源專案的深度應用

除了主導開源和捐贈專案,騰訊也在內部多個業務系統中應用了Apache基金會的開源專案。例如在微信、QQ、騰訊雲等業務版塊中,Apache的開源專案被廣泛應用——既覆蓋了大資料生態,如資料傳輸、儲存、計算和分析等需求場景,也涉及 API 閘道器、可觀測等服務治理的技術領域。

尤其是在大資料、API閘道器、可觀測三個領域,騰訊深度應用並且貢獻了Apache基金會的開源專案。

1)大資料專案代表——Ozone和Pulsar應用

騰訊大資料單日的接入訊息量超過 55 萬億,實時計算量超過 65 萬億,平臺整體算力超過 500 萬核,日分析任務數量達到 1500 萬。

作為日實時計算量最大的公司之一,騰訊需要強大的大資料平臺來支撐業務的開展,其能力也不斷被重新整理。除自研工具外,充分應用外部優質且成熟的開源專案如Apache Ozone和Apache Pulsar ,為騰訊需要大量資料和流量的業務場景提供了支撐。

Ozone 是當前 Apache Hadoop 生態圈中新一代分散式檔案物件儲存系統,於去年從Apache基金會畢業並正式成為Apache頂級開源專案。它能夠解決Hadoop分散式檔案系統HDFS的擴充套件性上限,滿足千億級小檔案的儲存需求。

作為 Ozone的早期採用者,騰訊大資料平臺已經部署了一個超過1000個節點的Ozone叢集作為大資料應用的後臺儲存。此外,騰訊還利用Ozone作為一些私人資料倉庫專案的主要儲存解決方案。

目前,騰訊正將越來越多的業務接入Ozone,包括資料倉庫、機器學習平臺、K8S叢集掛載盤等等。經過長時間的反覆驗證改進後,內部Ozone能夠以千臺以上的規模長時間穩定執行,且無須人工運維介入。在驗證改進過程中,騰訊做了大量的優化工作來改進效能,提升穩定性。

作為下一代雲原生分散式訊息流平臺,Pulsar 集訊息、儲存和函式式計算為一體,並採用儲存與計算分離的架構。Pulsar 目前在騰訊雲內部已經成功支援大量資料和流量業務場景,還有在雲原生環境上的一些實踐經驗,例如解決快速動態擴縮容,提升叢集資源的利用率、叢集形態等。

2)API閘道器專案代表——APISIX的應用與貢獻

隨著服務數量和複雜度上的不斷增長,越來越多企業採用了微服務的方式,API 閘道器也成為不可或缺的一環——使用 API 閘道器完成統一的流量管理和排程。

APISIX 是 Apache 去年新增的一個頂級的 API 閘道器開源專案,從2019年進入Apache基金會的短短一年時間就完成了畢業。這也說明了它的活躍度、健康度,且在快速的迭代發展。

對比Kong,APISIX 具有高效能、友好的開發者體驗、豐富的外掛能力等特徵,是騰訊內部業務選擇它的原因。

在APISIX的基礎上,騰訊對內共享基於公司自研的雲系統元件的配套支援,解決業務痛點,提供高效的API閘道器服務;對外向Apache APISIX開源社群進行貢獻,擴大影響力,引領開源社群發展。

3)可觀測領域專案代表——Skywalking在騰訊內部可觀測平臺的應用

隨著微服務架構的流行,全鏈路效能監測成為服務治理需要解決的一大問題,為微服務、雲原生架構和基於容器(Docker、K8S、Mesos)架構而設計的可觀測工具成為首選。

Skywalking是一個用於分散式系統的應用程式效能監視工具,專為微服務、雲原生架構和基於容器(Docker、K8S、Mesos)架構而設計,它具有多種監控手段,語言探針和Service Mesh多語言自動探針,輕量高效且支援告警,具備優秀的視覺化方案。

Apache Skywalking是吳晟個人創始專案,專案目前非常活躍,有完善的專案發展全景圖和里程碑,主倉庫有17,000個星星數(Stars),350個貢獻者。

騰訊內部可觀測平臺全面相容Apache Skywalking,Zipkin和Jaeger的客戶端上報,為微服務體系的客戶端tracing上報選型提供了極大的便利。同時使用計算儲存分離和多層查詢的機制,提供了非常優秀的效能輸出。

此外,在可觀測領域,騰訊最近也在使用CNCF中非常熱門的OpenTelemetry專案。

三大專案,助力騰訊開源生態的建設

當然,除了Apache基金會之外,騰訊目前以頂級會員的身份,活躍在全球超過十個基金會中。基金會提供智慧財產權管理的框架、程式碼倉庫、問題跟蹤、技術指導、專案治理、財務和公關管理等服務,騰訊的工程師和全球開發者們在其中一起協作。

通過在多個基金會中的實踐與貢獻,例如Linux基金會以及全球最大的雲原生開源組織CNCF基金會,騰訊吸取了比較成熟的開源組織治理模式及經驗,並用於指導內部專案的對外開源。

目前,騰訊累計對外開源了130多個自主專案,獲得了超過37萬的Star數,貢獻者人數也超過了2000人。專案覆蓋了雲原生、大資料、人工智慧、資料庫等多個技術領域,有對外專注人工智慧領域的Angel開源專案和微服務領域的TARS開源專案,在KVM、OpenJDK,騰訊都位列其全球貢獻者榜單前列,包括在Kubernetes、Spring Cloud、MariaDB等開源社群中,騰訊也在大力推動開源專案、產品以及解決方案的落地。

基於內部的開源專案,活躍於開源社群的經驗歷程,以及開源人才培養的專案,騰訊開源生態已逐步建立並不斷完善。

在未來的一段時間內,騰訊雲將重點通過三大專案進一步壯大騰訊開源生態的建設:

1)建立“騰源會”社群。騰源會是騰訊雲成立的匯聚開源專案、開源愛好者、開源領導者的開放社群,致力於幫助開源專案健康成長、開源愛好者能交流協助、開源領導者能發揮領袖價值,讓全球開源生態變得更加繁榮。

未來,騰訊希望通過“騰源會”這一中立性組織為開源交流和專案孵化搭建平臺,通過開源孵化器、共創社群、開源研討活動和實操類活動的舉辦,連結更多的開源專案,開源愛好者、實踐者和領導者,以及全球的開源基金會、開源文化。

2)建立產業開源聯合實驗室。開源實驗室是專案實戰的落地場所。未來,騰訊雲計劃陸續和國內多所知名高校以及開源企業一起成立產業聯合開源實驗室,為在校生、科研人員以及企業內的開發者提供實戰貢獻程式碼平臺,以及開源專案落地產業的場景。

      此外,騰訊今年也正式釋出了“犀牛鳥開源人才培養計劃”,通過打造面向高校學生的開源課程和開源實踐培養方案,培育開源人才、普及開源文化,助力開源人才生態的發展。

3)釋出《雲原生開源白皮書》。今年5月的“雲原生產業大會“上,騰訊雲聯合信通院宣佈正式啟動《雲原生開源白皮書》編寫工作,目前該白皮書還在編寫過程中,預計將在年底正式釋出。

以上這些平臺和專案的建設,開源實踐者和企業都可以參與進來。

結語

迄今Apache基金會已經運營了22年,事實證明它是將組織結構和靈活性平衡的開放性組織建設的最佳實踐之一。騰訊也在持續將Apache之道內化於其自身開源理念、開源方法論和開源生態建設的實操中。

未來,或許也會有越來越多的高校、企業或組織能在騰訊構建的開放性社群中,這是一條不遠的路。