做者介绍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/