Apache ShardingSphere 企业行|走进腾讯

为进一步了解各家厂商的应用场景与深层次需求,提升企业研发团队在使用 Apache ShardingSphere 的效率,Apache ShardingSphere 社区开启了【走进企业】系列活动。这次,Apache ShardingSphere 来到了深圳腾讯总部,面向腾讯的研发同学进行了相关技术分享。

2021 年 11 月,Apache ShardingSphere 核心技术团队来到深圳腾讯总部,与腾讯各条业务线的技术同学展开了深度交流和探讨。会上,Apache ShardingSphere PMC Chair、SphereEx 公司创始人张亮对 Apache ShardingSphere 能力都做了详细的介绍。

据悉,腾讯在多个业务场景下应用了 Apache ShardingSphere。随着 Apache ShardingSphere 5.0.0 正式版的更新,Database Plus 理念与可插拔架构在一定程度上重塑了 Apache ShardingSphere 生态。因此张亮受邀来到现场与腾讯各条业务线的工程师们对开源生态建设、Apache 软件基金会、ShardingSphere 场景解决方案等话题展开了讨论。

01 关于如何做开源

过去几年在开源社区上,国内用户大多是扮演程序下载和代码引用的角色,在社区建设方面却鲜有涉及。最近几年随着开源理念在国内推广,开始涌现出越来越多抱有强烈技术情怀的同学。正是有这些同学的加入,逐渐活跃了国内的开源市场,也渐渐将国外优秀的开源理念引入到国内的开源项目中来,近几年也开始涌现出越来越多优秀的国产开源项目,国人对于开源的关注度也愈发高涨。

需承受项目前期的孤独与苦闷

当然,对于一款新生开源项目而言,社区的建立和运营并非只是将项目代码公开在 GitHub 上这么简单而已,要进入到 Apache 孵化器也并非易事。对于一个好的开源项目而言,评判标准并非只是局限于理念超前、技术先进等,更多是在技术影响力、团队影响力、生态建设、开发者群体等多方面所积攒的深厚基础。

进入到 Apache 孵化器后,即便有了 Apache 导师的辅导,仍然需要度过一段孤独和苦闷的开发阶段。因为开源是一项乐趣与苦闷并存的工作,既然想要享受开源所带来的乐趣与成就感,就要首先承受项目前期只有自己在默默耕耘的苦闷时期。

坚守工程师自己的完美主义

首先,作为工程师,要掌握动态规划的思考能力。这就要求我们工程师将目光放长远,为未来的设计、需求的变化留出缺口,尽可能提供多种可能性。同时我们要站在全局的角度来进行规划,既关注眼前,也专注未来,坚信眼下自己所做的事情,尤其是在开源社区中所做的努力,一定会在未来某个时间点发挥其对应的价值。

其次,年龄永远都不是评判一个人能力强弱的标准。也许时间的增长并不会对你的代码速度带来多少提升,但过往的经验和对于业务的理解一定会让你避免很多不必要的坑。优雅的代码设计,周全的思考逻辑,健壮的代码本身以及完善的架构思考等等,这些都是无价之宝。如果团队里有一名坚守数十年如一日的工程师,他在团队中无疑将会起到定心丸的作用,对整个团队的效能提升反而是助力作用。

最后,跳出舒适区,主动向行业深处去探索。对于工程师而言,自身价值的体现不能只是在技术水平上,还体现在对于业务的理解上。因此,工程师应该主动选择一些有深度、有挑战的任务,培养自己对于业务设计和进度把控的能力,面向长期目标去努力,同时为满足短期目标而随时做出调整,让工程师本身的成长顺应所设定的目标去前进。

践行 Apache Way

The Apache Way 的核心原则是“社区高于代码”,健康社区的优先级远高于优秀的代码。“社区高于代码”的格言在 Apache 社区中经常得到加强,因为 ASF 声称健康的社区比良好的代码更重要。强大的社区总是可以纠正其代码的问题,而不健康的社区可能会努力以可持续的方式维护代码库。

以 Apache ShardingSphere 为例,作为一款 Apache 顶级开源项目,Apache ShardingSphere 现在依然在积极号召大家参与到开源社区中来,毕竟社区才是一款开源项目的核心,开发者才是社区的基石。毕竟大家每天接触到的只是身边这群人,所做的工作也只是办公室里的这些事,每天被『局限』在这个圈子中。而通过开源,则可以让自己的工作连接到世界,让自己能够抛开书本真正投入到项目中来,打开视野,逐渐培养开放、合作的精神,重新发现自己当下所产生的价值。

02 Apache ShardingSphere 在不同场景下的优势

Apache ShardingSphere 支持 JDBC 接入、Proxy 接入等多种形式,用户可以按具体需求来做选型,在原有集群之上来做分片、读写分离、数据迁移等相关操作。其中,用户可以完全以 JDBC 的方式去使用 Apache ShardingSphere,完全兼容 JDBC 和各种 ORM 框架,不需额外的部署和依赖即能够实现分布式管理、水平扩展、数据加密等一系列操作,且 Apache ShardingSphere JDBC 模式的性能明显优于 Proxy;

其次,Apache ShardingSphere 支持单独分库、单独分表和同时分库分表等灵活的分片方式,并且提供四种不同的分片策略以及能够让用户自行实现分片算法,使得用户能够更加自由地控制数据分片;

最后,Apache ShardingSphere 可插拔架构提供了数十个基于 SPI 的扩展点,基于此,Apache ShardingSphere 默认实现了数据分片、读写分离、数据加密、影子库压测、高可用等功能,开发者可以十分方便的对功能进行定制化扩展。


目前,Apache ShardingSphere 已更新 5.0.0 正式版。伴随着此次更新,Apache ShardingSphere 也正式将产品定位转向以 Database Plus 为核心的全新领域。除在数据库上层提供强大的增量能力之外,Database Plus 架构也为开发者和用户开放了高度可扩展的数据库生态,为 Apache ShardingSphere 未来的发展指明了方向。

加入 Apache ShardingSphere GitHub 社区: GitHub - apache/shardingsphere: Building a Standard Layer & Ecosystem Above Heterogeneous Databases

京ICP备2021015875号