2

伴随着开源产业的蓬勃发展,开源技术成为助力产业数智化变革的关键力量,开源企业更是受到资本的青睐。据不完全统计,仅在过去一年,国内先后有超过10家开源企业获得新一轮融资,融资纪录为近年来开源赛道最高。与此同时,大公司开源步伐加速、国内第一家开源基金会正式成立等消息,也成为了去年本土开源领域的重磅新闻。

随着越来越多的企业、人才、资金等大量涌入,在本土开源这一赛道之上,未来将涌现出更多优秀的开源参与者。然而,在参与开源的过程中,更多有关于企业开源治理、社区运营等方面的难题,却依然困扰着每一位投身开源的人。

去年4月16日,Apache软件基金会宣布Apache ShardingSphere毕业并成为顶级项目,成为基金会内首个分布式数据库中间件项目,这意味着Apache ShardingSphere在开源实践上取得的成果,获得了国际顶级开源组织的认可。而在这亮眼成绩的背后,ShardingSphere项目经历哪些阶段?一个活跃的、健康发展的开源社区需要具备哪些因素?企业在开源生态建设中又该面临哪些挑战?

近日,由InfoQ特别策划并推出「开源创新30人」系列采访报道中,InfoQ记者与京东科技架构师,Apache ShardingSphere项目VP&创始人张亮进行了一次深入交流。部分答案可在对话中得以揭晓。

▲京东科技架构师,Apache ShardingSphere项目VP&创始人张亮▲

ShardingSphere的三次蜕变

在开始企业开源治理及开源社区建设的话题之前,首先得从张亮及Apache ShardingSphere的发展说起。

截至目前,ShardingSphere项目已有150+公司采用,并涵盖金融、电商、数字化与云服务、互联网教育、出行、物流、医疗健康等各行各业,在京东内部也被广泛采用。事实上,从写下第一行代码到取得今天这样的成绩,ShardingSphere主要经历了三个阶段的发展。

在开源初期,当时还被命名为Sharding-JDBC的ShardingSphere主要由张亮个人主导,是一款基于Java JDBC接口实现的数据库分库分表管理框架。

据张亮介绍,当时决定写下第一行代码的原因,主要是因为行业内的数据库中间件长期没有足够成熟且能让大家广泛采用的产品。

张亮表示:

不同阶段的开源项目都让人觉得缺点什么,比如说对SQL的支持度不高,工具也不成熟,而且开源一段时间就没人维护了,都是些半成品

抱着改变这一现状的初衷,当时对社区都没什么概念的他便写下了Sharding-JDBC的第一行代码。

而在第一个版本的产品成型并发布后,由于Sharding-JDBC很好地屏蔽掉了数据持久化过程中分库分表等方面的实现细节,让开发者能够更轻松地实现数据库的水平扩展,产品开源后便获得了开发者的一致好评。

随后,伴随着Sharding-JDBC在开源社区得到认可,当时打算自研分布式数据库的京东科技团队也找到了张亮,有意邀请他加入。再三考虑后,张亮最终加入京东科技,全职做起了Sharding-JDBC,也从此开启了Sharding-JDBC第二阶段的发展旅途。

据张亮介绍,由于设计之初Sharding-JDBC主要是 基于JDBC标准接口实现的, 整体上更像是一款Java数据分片框架,因此也存在只能用于Java上的局限性。但事实上,业务应用开发语言不止Java一种,实现从一个Java框架到更为通用的跨语言数据库中间件产品的转变,Sharding-JDBC还有许多需要提升的地方。

首先是品牌的升级,将Sharding-JDBC改名成为了ShardingSphere,在保留原来开源框架累计下来的人气与品牌关注度的同时,进一步强调自己已经跳出了最初Java框架的固有产品形象。

与此同时,张亮还开始着手运营与组建社区,考虑将ShardingSphere推入Apache基金会,将其发展成为更加大众化的、能够成为开源数据库中间件领域标准的产品。

2018年11月,伴随着ShardingSphere正式进入Apache孵化,随后又于17个月之后正式毕业成为Apache顶级项目,在先后完成了社区组建,同时遵循Apache的规则将ShardingSphere所有权从公司与个人转向社区所有之后,ShardingSphere基本完成了第二阶段的转变。

在进入第三阶段之后,可插拔架构的提出,也开始成为了ShardingSphere发展需要考虑的问题。

据张亮介绍,可插拔思路的成型,主要是由于在使用ShardingSphere的过程中,京东内部除了对数据分片和读写分离等需求外,也逐渐衍生出了包括数据加密、影子库压测等这一类的需求。这些功能如果分别让各个系统部门自己去实现,就会出现重复造轮子的现象,但如果能够将这些功能中比较通用的能力抽离出来,集成到ShardingSphere之上,这就会极大地减少公司整体的工作量。

而在将这些功能集成到ShardingSphere的过程中,如何实现功能之间的互相隔离,不影响主架构运行,成为了ShardingSphere“可插拔架构”提出的关键。

据张亮介绍,在技术架构上,ShardingSphere的可插拔架构划分为面向数据库内核、企业应用和开源生态的三个层级。

L1内核层:面向数据库内核,包括查询优化、分布式事务、核心执行链路、调度引擎和分布式治理等。L1内核层是ShardingSphere通过对行业的思考所提供的解决方案。通过可切换的双引擎,在分布式数据库尚未成熟的变革阶段提供中间件增量服务;并在终将到来的分布式数据库成熟之时提供面向分布式的查询优化、事务和存储引擎。希望L1内核层的可插拔设计,能帮助传统数据库向分布式和云原生阶段提供平稳的演进路径。当然,目前内核层还属于筹划阶段。

L2功能层:面向企业应用,包括数据分片、读写分离、数据库高可用、强一致多副本、弹性迁移、数据加密、影子库以及其他扩展。它是开发者可以自行拓展的重点部分。L2功能层对于企业级应用意义重大,目前L2功能层已经较为完善。

L3生态层:面向开源生态,包括SQL方言、数据库协议以及数据网关。除了对单一数据库兼容度的提升,对异构数据源的打通数据网关也在探索中。L3生态层将是ShardingSphere对接和融入开源生态的标准。

从最初基于Java语言开发并开源的数据库分库分表框架开始,ShardingSphere一路随着市场的需求不断更新,先后经历了功能升级、治理模式切换,进入开源基金会等过程,逐渐演化成为了一个分布式的数据库生态体系。

社区大于代码的含义是“独行致快,众行致远”

一路转型升级的过程中,张亮对于开源的理解也在不断地提升。

从写下第一行代码到第一个开源版本发布,张亮用了三个月就完成了所有工作,在之后两年的运营过程中,张亮个人贡献的代码量也一度达到80%以上。但是开源之后,如何让整个项目长期稳定地运行下去,却成为了让张亮思考最多的问题。

一个项目的代码再好,但如果他是属于一个人的,那其实它的风险是非常大的。因为随着维护者的心情变化,可能这个项目可能会忽然就失去维护,或者开始维护很慢。从企业使用的角度来看,这样的项目是不被看好的。

在张亮看来,一个开源项目想要真正取信于人,一定是它要有一个稳定的基座,这个基座不能是第二天就会消失的东西。

而在亲历了ShardingSphere从进入Apache孵化到毕业的全流程之后,他为自己的这一理念找到了新的解释。

在Apache基金会内,“社区大于代码”的理念渗透到整个基金会运营决策的每一个环节,一句话便高度概括了Apache的运营发展之道。但在张亮看来,“社区大于代码”其实又可以解释为“独行致快,众行致远”。

张亮表示:

一个人去写代码可能会很快,但是只有更多的人一起参与进来,即使当项目的创始人累了不想走了的时候,背后也有别人在推着他向前走,并且经常会有一些有趣的新方法出现,刺激大家一起往前

关于如何打造一个持续活跃、健康发展的社区?张亮总结了以下五点经验:

第一,需要多去听多看。通过GitHub和邮件列表这些渠道,再小的声音都能够反馈到社区内部,项目运营人员通过这些渠道倾听参与者的声音,能够提炼出更加通用、普适的需求,进一步迭代出更加完善的功能,让开源项目的社区变得更加有活力,发展更为稳健。

第二,要保持英文化。社区是多元的,上面聚集了来自不同国家、地区乃至于文化背景的人,我们不希望社区是一个割裂的状态,统一用英文沟通,是对社区多元化的一个最基本的保障,它不会让一些想参与它的外国人,因为语言壁垒最终无法参与。

第三,每一次问题提交都要做到可检索。所有用户提的问题都需要尽量留痕,如果某一用户提了一个他自己没想清楚的问题,或者抛了一个空指针之后又关掉了页面,最好的方式就是提醒他将自己的问题完善或改到容易被检索的状态,因为这些问题可能之后会有其他的人看到,能给他人带来启发,这是存在价值的。与此同时,也需要定期去做一些问题的梳理与标签设置,让社区能够更好地了解项目当下的进展。

第四,需要有一个强大的测试系统。因为参与开源的人比较多,沟通的工作量也非常大,如果提交者上传的代码没有经过必要的前期测试就通过了,这导致的结果是,项目正确性的责任全部由后面代码审核的人负责,代码实现的分工将变得不那么合理。

第五,要避免重复造轮子。需要站到更高的维度去看问题,开源的生态还包括社区的交流共享,别人可能会用你的项目,你也需要适当地去采用别人的项目,避免做一些重复造轮子的事情。

“对于开源而言,最重要的不是代码的实现,而是代码背后的服务,及其对应的整个社区生态所蕴含的价值。”张亮表示。而在这一经验的指导和超200名社区参与者的共同努力下,ApacheShardingSphere在2020年Linux基金会旗下的OpenSSF的开源项目关键评分中,取得了Java语言类第72名,国人主导的开源项目第1名的亮眼成绩。

企业需要开放更多的开源岗位

在刚过去的2020年,伴随着越来越多基于开源模式的企业在商业上获得市场认可,国内出现了一批被投资者选中的开源项目,开源创业的春天,已然来临。

然而对于本土开源而言,在开源越来越热的当下,本土开发人员底层研发能力薄弱,工程能力大多停留于运用层的局限性,也正在制约着本土开源生态的发展成型,这些问题并不是短期内能够解决掉的。

在参加了无数场国际顶级的开源峰会之后,张亮最大的一个感触是,国外参会的开发者在40岁到60岁之间的人员依然很多,但是国内的参会者却普遍在30多岁之间。

张亮表示:

技术本身还是一个熟练工种,你在这个领域沉淀得越深了,累积的能力也便越强

在其看来,一个人在某一领域的思维变得非常活跃,而且经验也很丰富的时候,往往是这个人在这个领域耕耘了超过十年以上的时候,但国内的工程师在整个时间段的时候,可能已经转移到其他岗位上了。

未来本土开源生态的完善,仍有很长的路需要走。而针对这一现状,张亮给出的建议是——大型企业在参与开源治理的同时,需要开放更多全职的开源岗位。

张亮表示:

大型科技公司其实是希望有自己开源方面输出的需求的,这种输出的目的,其实是希望寻求对于行业标准的影响,进一步占领更多的话语权,赢得行业关注和口碑

在其看来,虽然大型企业参与开源本质上并不是100%奔着开源去的,但如果能让这些企业内参与开源的人投入50%的时间去做开源,就已经很足够了。

张亮表示:

一个开源项目如果全部是通过业余时间去完成的话,那么这个项目的发展在一定程度上是会很慢的

国内从来不缺优秀和聪明的开发者,但缺少的是能够让开发者去持续付出心血的环境,以及稳定的项目基石。

张亮表示:

当一个人的热情被投入到一个不合时宜的地方时,也许第二天承载着这些热情的项目就没了,这将会很糟糕,投入的价值也不大

他希望能够将ShardingSphere打造成一个能够吸纳开发者热情的靶心,带给开发者更多正向的回报,为本土开源生态的建设贡献一份自己的力量。

点击此处【链接】,浏览ShardingSphere技术社区专栏号,查阅更多ShardingSphere技术解析与项目文档。

推荐阅读

欢迎点击【京东科技】,了解开发者社区

更多精彩技术实践与独家干货解析

欢迎关注【京东科技开发者】公众号


京东云开发者
3.4k 声望5.4k 粉丝

京东云开发者(Developer of JD Technology)是京东云旗下为AI、云计算、IoT等相关领域开发者提供技术分享交流的平台。