「摘要」张亮,数据库管理部资深架构师,Apache ShardingSphere发起人 & PPMC热爱开源,目前主导开源项目ShardingSphere(原名Sharding-JDBC)和Elastic-Job。擅长以java为主分布式架构以及以Kubernetes和Mesos为主的云平台方向,推崇优雅代码,对如何写出具有展现力的代码有较多研究。

目前主要精力投入在将ShardingSphere打造为业界一流的金融级数据解决方案之上。ShardingSphere已经进入Apache孵化器,是京东集团首个进入Apache基金会的开源项目,也是Apache基金会首个分布式数据库中间件。

在过去的2018年,我所负责的ShardingSphere,有幸成为京东集团首个进入Apache基金会的孵化项目,很荣幸地入围集团技术金项奖提名。我是2018年初入职,时间过得真快,不知不觉已经整整一年。2019年的2月5日恰逢正月初一,写下此文记录我这一年的所闻、所见、所感与所得。

  契机 —— 加入京东  

加入之前,我在另一家互联网公司负责架构部,并倾力于开源。任职期间,我开源了两个项目:分布式调度框架Elastic-Job和数据库分库分表中间件Sharding-JDBC。对这两个项目,我投入了相当大的精力,也由此在开源界收获了较为良好的口碑。

除了自己的开源,我非常愿意帮助其他开源项目成长和进步。我曾经主导将架构团队开发的由Dubbo fork而来的分支DubboX捐献回Apache Dubbo;也曾经为公司的重点项目的基石——Apache Mesos进行本地化宣传,并获得了由mesosphere官方认可的DOCS宣传大使的荣誉;也曾在Apache Skywalking的推广初期帮助它在公司落地等等。在我的认知中,我愿意将开源当做是面向全世界技术人员的礼物,它应该可以跨越公司、跨越种族、跨越信仰,让对技术本身感兴趣的人建立连接。

为了寻求更广阔的天地,一年前我决定出来看看机会。因为能够做的方向比较多,所以我反而觉得举棋不定。有公司想邀请我去主导Kubernetes平台的搭建,也有公司愿意让我去帮助他们做有意向进入Apache的开源项目。但对于我来说,心里种下的种子始终难以舍弃,投入巨大精力的Elastic-Job和Sharding-JDBC,我非常希望将它们的其中之一推向Apache,成为世界顶级项目。因此,当京东的领导和同事跟我沟通时,我意识到了让Sharding-JDBC在京东集团生根发芽,并推向Apache国际舞台,不仅可以让其对公司基础设施建设贡献力量,也可以让它在国际化舞台上大展拳脚。这正是我心之所向,因此我放下犹豫,义无反顾的决定加入这个团队。

  扩张 —— 野蛮生长  

来到这里之后,我所面对的是全新的挑战。Sharding-JDBC还远未达到京东对分布式数据库中间件的需求。从部署架构来讲,它是一个jar包,即smart client形态,并不具备上云的能力;从功能来讲,它仅仅是一个分库分表中间件,缺乏对分布式事务的处理能力,难以形成功能上的闭环。为了让Sharding-JDBC快速成长,我决定扩充Sharding-JDBC的范围,将它升级为一个生态圈,为不同的用户提供更加多样化的选择。

在与领导沟通和交流后,扩展的方向定位到了接入端的扩充以及功能闭环这两块。首先要完成的是让Sharding-JDBC具备在云上部署的能力,即提供代理端。但是我之前有过使用Netty的经验,但并没有开发MySQL协议的经验,为了能够尽快验证这条技术路线的可行性,我全身心投入到MySQL代理端的开发工作中,披星戴月回家已成常态。

在开发过程中遇到了各种问题,例如:对MySQL协议的不熟悉、MySQL面向开发者的官方文档的部分不完善、缺乏调试经验等,都使得开发进展步履维艰。经过了无数的尝试与努力,终于迎来了阶段性成果。在一个多星期的全天候的努力付出之后,于2018年春节前夕将基本功能跑通。同时,我利用春节休假的期间将后端的数据分片能力完全挂接到代理端架构中,完全验证了这条技术路径的可能性,并提供了初始可用的版本。实际上,开发一个产品的原型,并不需要花费太久的时间,Sharding-JDBC的原型用了两周的时间就开发完毕,而这次代理端的原型也基本就是两周,其后续工作更多的是完善。

我一直对Service Mesh架构以及Sidecar模式青睐有加,希望能将Sharding-JDBC
完美的融入Service Mesh中,因此早就有了研究一个数据库中间层sidecar的想法。春节过后,我将思路梳理成文,并在InfoQ发表《Service Mesh是大方向,那DatabaseMesh呢?》[https://www.infoq.cn/article/database-mesh-sharding-JDBC]。它就像是一块石子投入平静的湖面,激起了各种关于Mesh的讨论。

在Smart Client、代理端以及Sidecar这三驾马车的想法渐渐成型之后,Sharding-JDBC这个项目名称已经不再适合。顾名思义,Sharding-JDBC的寓意是在JDBC
层进行数据分片的产品,随着接入端的扩展,JDBC已经无法涵盖它的全部范围。由于Sharding-JDBC在开源的两年中,累积了不少群众基础,因此,我也很难放弃原有的全部积累,转而完全从零开始。我曾经想过将Sharding-JDBC作为品牌保留,而将原有的JDBC接入端改名为Sharding-JDBC-Driver,将代理端命名为Sharding-JDBC-Server,并增加Sharding-JDBC-Sidecar模块,但名称略有牵强。经过考虑权衡,决定保留Sharding-JDBC这个项目,将其作为整体项目的一个子项目,将代理端的接入端命名为Sharding-Proxy,Sidecar接入端则顺其自然地命名为Sharding-Sidecar,由它们共同组成一个生态圈,名字就叫做ShardingSphere,意为分片生态圈。由此,ShardingSphere的全景图如下:

  追寻 —— 厚积薄发  

ShardingSphere规划确定之后,我开始紧锣密鼓的筹备将它推向Apache基金会孵化器的事宜。在Apache Skywalking发起人吴晟的帮助下,我完成了进入Apache基金会的准备,将

Proposal[https://wiki.apache.org/incubator/ShardingSphereProposal]早早的完成,满心期待的希望将ShardingSphere一蹴而就地推向Apache。很快,我们联系到了一位Apache的导师,Apache Cassandra的Michael。看完Proposal以及项目在GitHub的提交记录之后,Michael给我的反馈是:我个人在项目中的提交比重过多,超过了80%,Apache项目的社区目标是希望即使项目的初创者休假两个月,项目也能够不受影响地持续前行。

这则反馈使我深切地意识到了团队的重要性。借此契机,我便开始着手团队的组建。非常幸运的是,在京东这样优秀的平台,有着足够多对技术充满热情的同学。在团队组建之初就收获了来自其他各部门的同学的青睐。再加上社招的给力,一个来之能战的团队以出人意料的速度组建完成。在团队成员的共同努力下,ShardingSphere在分片核心、接入端、分布式事务这几方面齐头并进,很快便取得了惊人的成绩。在团队越来越多的发挥协同作战的力量之后,我更加进一步的理解那句话:一个人前进可以走的很快;大家一起前进才能走的更远。

在分布式事务开发的过程中,我们与Apache Servicecomb项目负责人姜宁一拍即合。Apache Servicecomb中的柔性事务Saga非常适合于ShardingSphere,因此我们达成战略合作,以更好的发挥各自优势。再加上之前和Apache Skywalking的良好合作关系,APM的集成也完全交由其完成。快速的将资源整合,使得ShardingSphere的进展更加迅速。

  收获 —— 水到渠成  

之前短暂的挫折反而让ShardingSphere迎来了全新的发展。它迅速的完成了与两个起源于中国的Apache项目的高度整合,在事实上融入了Apache项目的生态圈。随着团队不断的磨合,ShardingSphere对Apache Way的理解也愈加深入,随着社区越来越开放和成熟,进入Apache基金会孵化器的想法又开始躁动起来。

2018年10月,恰逢Apache基金会的三位导师Roman、Craig、Justin访华,他们分别在上海和深圳呆一周。怀着对最初梦想的执着,我忐忑的踏上了旅程,希望能说服其中几人,帮助ShardingSphere推向Apache基金会。

所幸经过了之前的经历,对于Apache基金会的规则我已基本了然于心,与导师们的交流十分愉快。他们三人均对ShardingSphere的评价非常高,并认为ShardingSphere无论是社区,Apache way,项目的规范度,甚至是Proposal的细节,都已经日臻完善,已经无需导师花费额外的精力去辅导。在他们回国后的一周,通过邮件决定由Roman担任ShardingSphere的Champion,Craig、姜宁以及一直以来与我保持良好关系的来自Mesosphere的创始人Benjamin共同担任项目的导师。在2018年的双十一之前一天,11月10日,ShardingSphere正式通过Apache基金会的投票

[https://lists.apache.org/thread.html/88beebeec1aec8c32d331a3957b9eaec5aeee3e4e1bb23664731d048@%3Cgeneral.incubator.apache.org%3E],成为Apache孵化器的一员。

  新的挑战 —— 知难而进  

进入Apache基金会并非结束,而是一个全新的开始。从进入孵化器的那一天开始,ShardingSphere便进入了一个全新的领域,在这个领域中,充满了未知和挑战。而面向这些全新的挑战,ShardingSphere团队已经打起十二分精神,随时准备面对困难的洗礼。

如京东某业务由于业务体量巨大,数据库不可避免地进行了水平拆分。拆分之后的数据节点规模达到了十万级别,是极度少见的金融级、高并发、海量数据并存的应用系统。为了追求性能极致以及代码的可控性,它之前是在业务框架中,根据分片键替换数据库和表名称进行分片的。

随着业务的发展,通过业务框架进行分片的方式,使得代码的维护成本不断攀升。ShardingSphere在经过了大量系统的验证之后,理所当然的成为了这一业务的数据分片中间件的首选方案,ShardingSphere团队也非常愿意帮助业务团队解耦业务和底层技术代码,缓解开发工程师肩上的重担。

虽然经历了大量系统的检验,ShardingSphere已经相对成熟,但面对其体量在全国乃至世界上均屈指可数的王牌级产品,仍将是一次严峻的考验。而事实上,对接工作也确实不是一帆风顺,遇到了很多在以往系统中不曾遇到的深层次问题。在经过一个个不眠之夜后,ShardingSphere已经平稳的在其生产环境运行了几周,性能与原生JDBC几乎一致,GC次数与资源消耗也未见异常。

在已经到来的2019年,ShardingSphere将迎接更大的挑战,对内更加全面的服务于公司,对外则致力于打造业界一流的解决方案,成为国际化技术产品翘楚而努力。

  结  语  

在一年的前进历程中,ShardingSphere经历过挫折,也获取了短暂的成功,但我们不会站在历史的功劳簿上,而是要不断前进。获得金项奖提名是对ShardingSphere团队以及社区的巨大认同。我们会将它当做前进的动力,继续不断的精进自己。谨以此文记录并感谢ShardingSphere团队和社区在过去一年来的努力和付出,并希望它能在今后为京东贡献更大力量,并在业界和国际化舞台上绽放风采。

pache ShardingSphere(Incubating)自2016开源以来,不断精进、不断发展,被越来越多的企业和个人认可:Github上收获6000+的stars,70+公司企业的成功案例。此外,越来越多的企业和个人也加入到Apache ShardingSphere(Incubating)的开源项目中,为它的成长和发展贡献了巨大力量。

我们从未停息过脚步,聆听社区伙伴的需求和建议,不断开发新的、强大的功能,不断使其健壮可靠!

开源不易, 我们却愿向着最终的目标,步履不停!

那么,正在阅读的你,是否可以助我们一臂之力呢?分享、转发、使用、交流,以及加入我们,都是对我们最大的鼓励!

项目地址:

https://github.com/apache/incubator-shardingsphere

更多信息请浏览官网:

http://shardingsphere.apache.org/

我在京东这一年—张亮相关推荐

  1. ​突破 1nm!台积电祭出“半金属”取代硅材料;搜狗发布手语 AI 合成主播;iOS 微信 8.0.6 版本更新|极客头条...

    「极客头条」-- 技术人员的新闻圈! CSDN 的读者朋友们早上好哇,「极客头条」来啦,快来看今天都有哪些值得我们技术人关注的重要新闻吧. 整理 | 梦依丹 出品 | CSDN(ID:CSDNnews ...

  2. jdbc取款怎样限制条件_京东张亮:我们是怎样打造一款分布式数据库的

    我们是怎样打造一款分布式数据库的 作者 | 张亮 关系型数据库在过去数十年的数据库领域一直占据着绝对主导的地位,它所带来的稳定性.安全性和易用性,成为了构建现代化系统的基石.随着的互联网高速发展,构架 ...

  3. 京东数科首次公开:强一致、高性能分布式事务中间件JDTX

    点击蓝色"程序猿DD"关注我 回复"资源"获取独家整理的学习资料! 作者 | 张亮 来源 | http://1t.click/aJPE 在分布式数据库.云原生数 ...

  4. 一文读懂京东技术发展简史

    文章目录 前言 京东发展历程 京东商城技术的演进 京东自研技术 京东前端框架Nerv 京东后端架构 京东的服务框架 分布式数据库StarDB 京东云 移动端 Flutter在京东的实践 大数据 咚咚架 ...

  5. 喜报丨京东科技主导的开源项目ShardingSphere荣登报告榜单国人主导开源项目中活跃度第五名!...

    1月19日,开源社发布<2020 中国开源年度报告>.在报告中,ShardingSphere荣登所有国人主导开源项目中活跃度第五名,作为 Apache 软件基金会下属的国人主导的开源项目中 ...

  6. 双11背后,再看京东云的「底色」

    ​ 京东的新底色是什么?在京东云身上,一个关于产业的答案正在逐渐成型. 作者|皮爷 出品|产业家 今年双11,用户体验更丝滑的同时,京东集团副总裁.京东云事业群总裁高礼强也觉得更轻松了. " ...

  7. 云原生在京东丨ASF顶级分布式数据库中间件项目——Apache ShardingSphere

    云妹导读: 不知不觉[云原生在京东]已经进行了两期,在先前<云原生在京东丨揭秘五大云原生项目在京东的落地实践>和<云原生在京东丨最适合云原生的分布式存储平台--ChubaoFS> ...

  8. 京东智联云 助力 2020 中国开源年会 暨 阿帕奇中国路演

    作为业界最具影响力的开源年度盛会,2020 中国开源年会 ( COSCon'20 ) 将于今年 10 月 24-25 日如期举办.京东智联云也赞助参加了这次年度盛会,目前在京东运营着全世界最大规模的D ...

  9. 京东广告典型源码示例二

    广告资源链接 http://x.jd.com/exsites?spread_type=2&ad_ids=208:5&location_info=0&callback=getjj ...

  10. 京东典型广告推广源码示例一

    下面是一段京东广告推广的js源码,采用<iframe>标签内嵌到html中.html中事先有如下位置预留 <divid="Tech_F_Upright" styl ...

最新文章

  1. “蓝桥杯”软件大赛入门训练4道题
  2. git Rebase 变基 教程
  3. 1961-Check If String Is a Prefix of Array(检查字符串是否为数组前缀)
  4. 2021年中宁中学高考成绩查询,2021宁夏中卫市重点高中排名
  5. Visual Studio 2017 已知问题 Qamp;amp;A
  6. double类型进行比较排序
  7. ThinkPHP中的find和select的区别
  8. 仿微信选取图片发表朋友圈功能
  9. js数组获取index_通过事例重温一下 JS 中 常见的15 种数组操作(备忘清单),收藏...
  10. 计算机网络毕业论文 20页,计算机网络技术专业毕业论文(23页)-原创力文档
  11. 看看webpack打包优化
  12. 【李宏毅2020 ML/DL】P115-117 Actor-Critic Sparse Reward Imitation Learning
  13. springcloud断点续传源码_SpringCloud 超大文件上传和断点续传的实现
  14. ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
  15. python vba 区别_VBA和Python该学哪个?
  16. 元宇宙引擎脑语言2500令v0.5.6
  17. coji 编程机器人_娃喜欢就行—“编程机器人”COJI
  18. matlab二进制香农,香农编码及MATLAB实现.ppt
  19. 统计|方差分析拒绝原假设的LSD一般步骤及实现
  20. IU酒店释放轻中端投资活力,开启曲靖酒店新篇章

热门文章

  1. CAN总线简易入门教程
  2. alpha 冲刺 —— 十分之一
  3. 机器学习中的数学——距离定义(一):欧几里得距离(Euclidean Distance)
  4. UE4 用spline画正圆
  5. Android 10.0 recovery prompt_and_wait 跳过弹窗 自动 WIPE_DATA(出厂设置)
  6. Jquery 实现json复杂查询等操作(jsonDB)
  7. Codeforces 918D - MADMAX
  8. 单片机课设中期报告_基于单片机的火灾自动报警系统 中期报告
  9. 蒟蒻的WA之路——二分法学习
  10. Excel列与数字的转换