Sharding-JDBC往事
2015年夏天我们在北京静安中心12层当当架构部启动自研数据库中间件项目的时候,完全没想过3年多之后,这个项目会成为首个加入Apache基金会的分布式数据库中间件开源项目,并在超过60家公司的系统中投入应用。
Apache ShardingSphere,发端于Sharding-JDBC,记得当年为了取名字,张亮颇为纠结了几天,叫Shard还是Sharding?SQL还是JDBC?最后命名为Sharding-JDBC。如今,张亮在京东数科组建团队,继续主导Apache ShardingSphere项目,发布了3.0版本,产品生态圈进一步扩展,Sharding-Proxy已成型,Sharding-Sidecar正在孵化中,Apache ShardingSphere将支持云原生,成为金融云上的数据库服务,未来发展令人期待。而我呢,离开当当整整两年,回首往事,仿佛就在昨天,但又很是遥远,曾经的同事们也星散四方,在各自的道路继续向前,有着更好的发展。
向前追溯,这一切的缘起是在2014年,那时当当架构部招兵买马,引进多名架构师,包括沈理、张亮、邓学祥、董四辈、池田、吴翊以及年底来的曹昊,我们以技术委员会的名义发起针对互联网主流技术架构的调研,包含了SOA服务框架、定时任务管理、消息队列、数据库中间件几个专题,以此为契机推动当当技术架构转型升级。当时开源的数据库中间件已经有MyCat、Corba、TDDL、Atlas、Fabric,我们进行了对比分析,因为成熟度不甚理想,且无紧迫需求,并未确定采用开源产品。在技术VP震平支持下,我们开发应用框架ddFrame,其中SOA采用了沈理二次开发的DubboX,定时任务采用了TBSchedule,数据库部分dd-rdb则是自己开发的,当时还只是个雏形。待到2015年我们的自研分布式定时任务框架elastic-job开源发布后,就将下一阶段的攻坚目标转移到数据库中间件上。自研数据库中间件技术难度极高,经过权衡决定先易后难,先开发SmartClient方式的轻量级组件,实现标准的JDBC,这样迁移成本低,架构简洁可控,Proxy方式待条件成熟再挑战,毕竟数据库中间件的最高境界是透明无感知,换句话说就是自己设计搭建一套数据库系统,得稳定可靠性能优异,谈何容易!好在机缘巧合,我们招聘到了在数据库领域有深入钻研的高洪涛加入,恰逢当当踌躇几年之后决定重构WMS和TMS系统需要分库分表解决方案,天时地利人和,经过张亮、高洪涛、曹昊、岳令几个月的辛勤开发和反复测试,Sharding-JDBC应运而生闪亮登场!成型之后,顺理成章的成为当当架构部第三个开源产品。在当当那几年,我们坚持做了很多自认为正确的事,时过境迁物是人非,内部的系统不知变成了什么样子,好在如今三个开源项目都已开花结果,DubboX提交回了Apache Dubbo,算是认祖归宗,Elastic-Job升级成了Elastic-Job-Cloud。
做开源项目并不容易,涉及分布式数据持久化的项目更不容易,必须高标准严要求,张亮作为灵魂人物,发挥了不可替代的作用,他对技术的完美追求和代码洁癖,导致初期的产品经历过多次代码重构,这一点,对比项目总代码量和变更量就可见一斑,相信参与项目的每个成员都有切身体会。反复打磨精益求精打造出了过硬的产品,积累起了良好的口碑,也最终获得了国际水平的认可,在此感谢和祝贺项目所有的参与者和使用者,我也与有荣焉。
进入Apache基金会是一个里程碑,意味着更大责任和更高要求。项目最终会迭代进化到怎样的状态,我们拭目以待!做开源项目我的最大遗憾是没有带动更多的当当同事参与,不知道是否有人有相同感触,好在开源精神就是自由开放,无论何时参与进来都不晚。欢迎对分布式数据库中间件感兴趣的同学,都来关注Apache ShardingSphere,参与其中,贡献代码,什么时候郁闷了也可以拍着胸脯自信的说“哥参与过Apache的开源项目”,收获一片崇拜,心头暗爽之后闷头继续改Bug写Bug……
ShardingSphere自2016开源以来,不断精进、不断发展,被越来越多的企业和个人认可:在Github上收获5000+的star,2000+forks,60+公司企业的成功案例。此外,越来越多的企业和个人也加入到Sharding-Sphere的开源项目中,为它的成长和发展贡献了巨大力量。
项目地址:
https://github.com/sharding-sphere/sharding-sphere/
https://github.com/sharding-sphere/sharding-sphere/issues/1189
更多信息请浏览官网:
http://shardingsphere.io/