Apache畢業賀禮—Apache ShardingSphere跌宕起伏的開源之路

做者介紹git

潘娟,京東數科高級DBA,Apache ShardingSphere PMC

張亮,京東數科數據研發負責人,Apache ShardingSphere VP,Apache Dubbo PMC,人氣開源項目Elastic-Job做者github

前序

從Sharding-JDBC到Apache ShardingSphere;
從輕量級的分庫分表中間件到完整閉環的分佈式數據庫中間件平臺;
從2016年1月的第一行代碼到現今的300K+行代碼;
從寥寥無幾的關注到GitHub 10K+的star;
從無人問津的社區到100+位貢獻者;
從公司內部的應用類庫到100+的採用公司列表;
從尋找mentor到順利成爲Apache頂級項目。
……

Apache ShardingSphere團隊核心初創人員將講述這其中的跌宕起伏,並以時間軸爲線索爲你呈現它開源之路背後的故事。數據庫

項目介紹

Apache ShardingSphere是一套開源的分佈式數據庫中間件解決方案組成的生態圈,它由3款相互獨立,卻又可以混合部署配合使用的產品組成。它們均提供標準化的數據分片、分佈式事務和數據庫治理功能,可適用於如Java同構、異構語言、雲原生等各類多樣化的應用場景,核心功能如1-1所示。apache

image.png
1-1 ShardingSphere核心功能架構圖api

Apache ShardingSphere由三個子項目組成,造成一個完整的數據庫解決方案,合稱 J.P.S. 生態系統。微信

ShardingSphere-JDBC:定位爲輕量級Java框架,在Java的JDBC層提供額外服務。 它使用客戶端直連數據庫,以jar包形式提供服務,無需額外部署和依賴,可理解爲加強版的JDBC驅動,徹底兼容JDBC和各類ORM框架。架構

ShardingSphere-Proxy:定位爲透明化的數據庫代理端,提供封裝了數據庫二進制協議的服務端版本,用於完成對異構語言的支持。 目前提供MySQL/PostgreSQL版本,它可使用任何兼容MySQL/PostgreSQL協議的訪問客戶端操做數據,對DBA更加友好。框架

ShardingSphere-Sidecar(TODO):定位爲Kubernetes的雲原生數據庫代理,以Sidecar的形式代理全部對數據庫的訪問。 經過無中心、零侵入的方案提供與數據庫交互的的齧合層,即Database Mesh,又可稱數據網格。異步

Apache ShardingSphere的亮點主要包括:分佈式

  1. 完整的分佈式數據庫解決方案:提供數據分片、分佈式事務、數據彈性遷移、數據庫和數據治理等核心能力。
  2. 獨立的SQL解析引擎:支持多SQL方言的徹底獨立化SQL解析引擎,可以脫離ShardingSphere獨立使用。
  3. 可插拔微內核:全部的SQL方言、數據庫協議和功能都可以經過SPI的可插拔方式加載或卸載,微內核甚至在將來能夠運行於無任何功能的空白環境中。

爲Apache作準備

找尋mentor是進入Apache基金的最初且最重要的一步。在瞭解了Apache基金會的運做方式後,咱們便踏上了找尋mentor之旅。參加各類與開源相關的分享會或meetup,藉此來認識Apache的member。可是,事情卻並不順利。屢次的嘗試,屢次的接觸換來的只是口頭的承認。這段時間咱們確實倍感壓力和焦慮,甚至打算之後再說,一切隨緣。

後來一個契機,咱們認識了吳晟和華爲的姜寧。吳晟是Apache SkyWalking項目的VP,在開源領域有豐富的經驗。他和ShardingSphere的前身Sharding-JDBC頗有淵源,Sharding-JDBC項目原型也有他參與設計,所以,他最終做爲ShardingSphere的PPMC一同建設社區。在參與ShardingSphere社區建設的這一年多的時間裏,他又陸續擔任了多個Apache孵化項目的Mentor,並在今年被選舉爲Apache Member;而姜寧一樣是一位熱心又有經驗的老手,是國內最資深的Apache Member之一,在與他交流的過程當中,終於讓咱們看到一些但願,他也最終成爲了咱們的mentor。再後來,團隊VP張亮又前去上海蔘加HDC大會,認識了咱們的另外一位mentor—Craig L Russell,Craig當時是Apache的祕書長,全部的SGA、ICLA等法務文件均由他負責簽署。在ShardingSphere孵化的過程當中,Craig當選了Apache軟件基金會的主席。他友善而和睦,給予了咱們不少有關社區規範的實用建議,也願意助咱們一臂之力;第三位mentor則是由Apache RocketMQ的核心成員馮嘉擔任;最後由Roman Shaposhnik擔任項目的Champion,爲項目尋找導師之旅畫上完美句號。

至今還記得咱們當時的欣喜和激動。以前的無助、徘徊、失落在這一瞬間柳暗花明。每一個進入Apache基金會的項目,必定都有本身的故事。尤爲對於中國的項目來講,語言與地域的障礙讓咱們雪上加霜。好在有愈來愈多的來自於中國的項目進入了Apache基金會,也能看到愈來愈多的華人活躍在Apache的郵件列表裏,還有ALC Beijing的創建讓參與門檻不斷下降,這對想要參與的國內朋友來講,確實是個good news!

進入Apache孵化器

爲了正式進入Apache孵化器,項目代碼、社區、文檔等都須要進行一系列的規範和整理。這確實是個瑣碎但很重要的事情。

代碼層面,合規操做是首要原則。咱們梳理第三方依賴的許可協議, 確保知足Apache軟件許可協議(ASL)合規的要求;社區方面,咱們開始由中文轉變成英文;文檔方面則須要咱們準備英文文檔,並準備相關的proposal。因爲項目最開始的目標就是進入Apache基金會,因此在項目初期,依賴就儘量地簡單,社區相對規範,文檔在不斷翻譯。不打無準備之仗,這些提早的準備讓這部分工做進展順利,而項目得到Apache域名的那一刻,你們才真切感覺到全部付出獲得了最有價值的回報。

除了學習寫規範代碼,團隊成員也開始學習Apache的規範、運做方式、英文溝通渠道等細節。咱們開始瞭解到如何關注社區,什麼是consensus decision,如何用異步方式進行郵件溝通。特別是郵件列表的學習很是重要,你能夠在其中找到歷史問題記錄、合規的解決方案、優秀的案例等。

Apache way的探索

不少人認爲只要代碼開放,就叫作開源。但其實,這僅僅只是開源旅程的第一步。如何構建一個活躍的社區,如何理解Apache way,是一個更爲重要的話題。ShardingSphere在進入Apache孵化器初期並未能徹底理解Apache way,而且因爲過分注重代碼風格,以致於參與門檻較高、社區活躍度平平。起初,咱們並不知道問題出在哪裏,迷茫了很長一段時間,直到在跟Apache的member不斷交流的過程當中才漸漸意識到問題所在,所以社區發起了有關committer bar的討論,見圖1-2。這是社區建設之路的轉折點,由於今後community over code的理念開始逐漸滲入人心,並指導咱們的行動。

image.png
1-2 Committer bar討論郵件

仔細閱讀Apache way的關注點:Earned Authority, Community of Peers, Open Communications, Consensus Decision Making, Responsible Oversight。你會發現它一直在強調合規、開放、平等、協做,爲的就是創建合規且活躍的項目社區,儘量地作到讓更多的人蔘與,平等溝通,推進項目發展,促進我的成長。

秉持這個理念,ShardingSphere開始在多維度進行調整,

  • 代碼:規整代碼結構,劃分模塊功能,提供項目可插拔能力,從而容許用戶局部參與某一模塊的同時,儘可能不破壞總體代碼結構。
  • 心態:開放的心態,編制社區任務,鼓勵社區朋友參與,相關PPMC或Committer積極提供指導和幫助。
  • 規範:梳理文檔和代碼規範,並提供詳細的訂閱、參與指南,大範圍促進用戶自主進行社區貢獻。
  • 交流:鼓勵社區儘量使用郵件和Issue進行討論從而公開討論內容,同時針對較爲細節的討論則放在微信羣裏進行。此外,官方公衆號還會介紹社區的進展、Release、刊登技術文章等。
  • 合做:與其餘Apache社區創建聯繫、增長溝通,從合做交流中進行學習和發展。

在孵化期間,Apache ShardingSphere前後與Apache SkyWalking、Apache ServiceComb進行項目的合做與集成,不只彼此的產品功能更加完善,還增長了社區成員之間的交流。此外,還與Apache DolphinScheduler(Incubating)和Apache IoTDB(Incubating)舉辦了co-meetup,詳見圖1-3。還與Apach pulsar和Apache APISIX(Incubating)的核心成員們進行了屢次交流和探討。

image.png
1-3 co-meetup

通過時間的積累,社區已有了質的變化。從社區的郵件討論、GitHub的數據展現中,你會發現ShardingSphere的社區開始真正變得活躍與多元化。圖1-4展現了ShardingSphere在Apache孵化器一年多的社區數據變化。

image.png
1-4 社區數據變化

社區與貢獻者之間的依賴和互贏也在整個過程當中體現的淋漓盡致。對於貢獻者來講,他們會在這個開源社區中與其餘人交流、協做。而這個持續的過程,將帶來如下成果,

  • 擴大人際交友圈
  • 不斷學習與成長
  • 提升本身的技術影響力
  • 拓寬職業渠道
  • 結合興趣,享受過程

而對於社區來講,這個相互幫助和溝通的過程則會,

  • 拓展項目的功能
  • 收穫活躍多元化的生態圈
  • 增長項目知名度
  • 得到社區的可持續發展

從這個角度來看,不斷探索Apache way不也是但願出現這樣一種雙贏而互助的局面嗎?Please remember community over code。

從孵化器畢業

全部孵化器的項目最終都但願能走向TLP(Top Level Project)。在mentor的指導、PPMC的探索、committer和contributor的支持與付出下,ShardingSphere開始籌備Apache孵化器畢業。依據Apache的成熟度評估模型圖1-5,在如下幾個方面評估社區和項目是否成熟。其實在Apache項目社區的初建階段,咱們建議你們就在這幾個方面發力,由於這是官方給予的畢業標準及指導方針。以此爲方向,探索屬於各自項目的獨特社區運做方式,也可謂是百花齊放。

image.png
1-5 Apache項目成熟度評估模型

經歷Release、社區建設、Apache member的指導、meetup舉辦等一系列事件,ShardingSphere終於在社區發起了畢業討論,開始接受Apache member及全部Apache成員的指導和評估。雖然最終以10 +1 binding votes,6 +1 non-binding votes和 no -1 or +/-0 votes經過畢業投票,但過程也是一波三折。

即使是通過1年多的社區建設,項目基本成熟,但面對畢業仍是有不少工做要合乎畢業規範。例如確認商標是否可以使用、完成項目官網有關Apache brand和trademark的陳述、網站符合Apache way等。在這個投票期間,因爲官網存在fork me on github的slogan,而這一問題一直頻繁出現而且沒有結論,因此其餘Apache成員藉此單獨開闢了thread來討論這一問題,查看Email List瞭解詳情。雖然說這一舉讓ShardingSphere被成功推到前臺,間接提升了項目的曝光,卻也能看出Apache對於第三方獨立、禁止參與商業行爲的重視和嚴苛。可喜可賀的是,2020年4月16日,Apache ShardingSphere最終經過基金會董事會決議,加入了TLP行業!

將來的路

從Apache孵化器畢業成爲TLP,對ShardingSphere來講,並非一個結束,而是另外一個開始。在產品功能上,ShardingSphere將繼續在分佈式數據庫中間件平臺上深耕,打磨出以「分佈式」爲核心的數據庫中間件生態圈,從而提供完整的解決方案,如圖1-6所示。從社區角度講,ShardingSphere仍將繼續活躍社區,鼓勵更多朋友成爲社區的committer和contributor。因此,咱們歡迎你們關注ShardingSphere,並加入到社區來,與更多知己結伴前行。

image.png
1-6 Apache ShardingSphere生態圈

將來之路不可預測,但立足當下,眺望將來,初心未改,即使亦步亦趨,也願一葦以航!

Apache ShardingSphere committer列表

Mentor

Craig L Russell
馮嘉,阿里巴巴
姜寧,華爲

PMC

張亮,京東數科
潘娟,京東數科
趙俊,京東數科
張永倫,京東數科
陳清陽,翼支付
曹昊,海南新軟
馬曉光
杜紅軍,領創智信
楊翊,京東數科
吳晟,tetrate.io
高洪濤,tetrate.io

Committer

李亞,九個小海豹
顏志一,DaoCloud
董宗磊,京東零售
孫海生,瓜子
王奇,京東零售
歐陽文,一卡易
蔣曉峯,阿里巴巴
王光遠
秦金衛,京東數科
嶽令
趙亞楠

官網: https://shardingsphere.apache.org/
相關文章
相關標籤/搜索