做者介紹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
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的亮點主要包括:分佈式
找尋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軟件許可協議(ASL)合規的要求;社區方面,咱們開始由中文轉變成英文;文檔方面則須要咱們準備英文文檔,並準備相關的proposal。因爲項目最開始的目標就是進入Apache基金會,因此在項目初期,依賴就儘量地簡單,社區相對規範,文檔在不斷翻譯。不打無準備之仗,這些提早的準備讓這部分工做進展順利,而項目得到Apache域名的那一刻,你們才真切感覺到全部付出獲得了最有價值的回報。
除了學習寫規範代碼,團隊成員也開始學習Apache的規範、運做方式、英文溝通渠道等細節。咱們開始瞭解到如何關注社區,什麼是consensus decision,如何用異步方式進行郵件溝通。特別是郵件列表的學習很是重要,你能夠在其中找到歷史問題記錄、合規的解決方案、優秀的案例等。
不少人認爲只要代碼開放,就叫作開源。但其實,這僅僅只是開源旅程的第一步。如何構建一個活躍的社區,如何理解Apache way,是一個更爲重要的話題。ShardingSphere在進入Apache孵化器初期並未能徹底理解Apache way,而且因爲過分注重代碼風格,以致於參與門檻較高、社區活躍度平平。起初,咱們並不知道問題出在哪裏,迷茫了很長一段時間,直到在跟Apache的member不斷交流的過程當中才漸漸意識到問題所在,所以社區發起了有關committer bar的討論,見圖1-2。這是社區建設之路的轉折點,由於今後community over code的理念開始逐漸滲入人心,並指導咱們的行動。
1-2 Committer bar討論郵件
仔細閱讀Apache way的關注點:Earned Authority, Community of Peers, Open Communications, Consensus Decision Making, Responsible Oversight。你會發現它一直在強調合規、開放、平等、協做,爲的就是創建合規且活躍的項目社區,儘量地作到讓更多的人蔘與,平等溝通,推進項目發展,促進我的成長。
秉持這個理念,ShardingSphere開始在多維度進行調整,
在孵化期間,Apache ShardingSphere前後與Apache SkyWalking、Apache ServiceComb進行項目的合做與集成,不只彼此的產品功能更加完善,還增長了社區成員之間的交流。此外,還與Apache DolphinScheduler(Incubating)和Apache IoTDB(Incubating)舉辦了co-meetup,詳見圖1-3。還與Apach pulsar和Apache APISIX(Incubating)的核心成員們進行了屢次交流和探討。
1-3 co-meetup
通過時間的積累,社區已有了質的變化。從社區的郵件討論、GitHub的數據展現中,你會發現ShardingSphere的社區開始真正變得活躍與多元化。圖1-4展現了ShardingSphere在Apache孵化器一年多的社區數據變化。
1-4 社區數據變化
社區與貢獻者之間的依賴和互贏也在整個過程當中體現的淋漓盡致。對於貢獻者來講,他們會在這個開源社區中與其餘人交流、協做。而這個持續的過程,將帶來如下成果,
而對於社區來講,這個相互幫助和溝通的過程則會,
從這個角度來看,不斷探索Apache way不也是但願出現這樣一種雙贏而互助的局面嗎?Please remember community over code。
全部孵化器的項目最終都但願能走向TLP(Top Level Project)。在mentor的指導、PPMC的探索、committer和contributor的支持與付出下,ShardingSphere開始籌備Apache孵化器畢業。依據Apache的成熟度評估模型圖1-5,在如下幾個方面評估社區和項目是否成熟。其實在Apache項目社區的初建階段,咱們建議你們就在這幾個方面發力,由於這是官方給予的畢業標準及指導方針。以此爲方向,探索屬於各自項目的獨特社區運做方式,也可謂是百花齊放。
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,並加入到社區來,與更多知己結伴前行。
1-6 Apache ShardingSphere生態圈
將來之路不可預測,但立足當下,眺望將來,初心未改,即使亦步亦趨,也願一葦以航!
Craig L Russell
馮嘉,阿里巴巴
姜寧,華爲
張亮,京東數科
潘娟,京東數科
趙俊,京東數科
張永倫,京東數科
陳清陽,翼支付
曹昊,海南新軟
馬曉光
杜紅軍,領創智信
楊翊,京東數科
吳晟,tetrate.io
高洪濤,tetrate.io
李亞,九個小海豹
顏志一,DaoCloud
董宗磊,京東零售
孫海生,瓜子
王奇,京東零售
歐陽文,一卡易
蔣曉峯,阿里巴巴
王光遠
秦金衛,京東數科
嶽令
趙亞楠
官網: https://shardingsphere.apache.org/