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

image.png

image.png
image.png

Apache ShardingSphere 定位为开源的分布式数据库中间件解决方案组成的生态圈,旨在充分合理地在分布式的场景下利用关系型数据库的计算和存储能力,而并不是实现一个全新的关系型数据库。它经过关注不变,进而抓住事物本质。关系型数据库当今依然占有巨大市场,是各个公司核心业务的基石,将来也难于撼动,Apache ShardingSphere 目前阶段更加关注在原有基础上的增量,而非颠覆。git

image.png

在聊起 Apache ShardingSphere 历史时,还要从它的前身—— Sharding-JDBC 开始。2015 年,现任 Apache ShardingSphere 项目 VP 的张亮和他的团队决定在 Java 的 JDBC 层植入代码,来达成开发成本最小化,自研开源的分布式数据库中间件项目 Sharding-JDBC。github

在那以后,Sharding-JDBC 随着市场的需求不断更新,完成到ShardingSphere,再到 Apache ShardingSphere 的转变,产品自己也从分库分表的 Java 开发框架演化为了分布式数据库生态体系。数据库

2016 年开始 Apache ShardingSphere 正式开源,不断升级开发新功能、重构稳定微内核,并于2018 年 11 月进入 Apache 基金会孵化器。apache

2020 年4月16日,Apache ShardingSphere 正式从Apache 软件基金会(Apache Software Foundation,ASF)毕业,并成为 Apache 顶级项目(Top Level Project,TLP),这也是目前 ASF 首个分布式数据库中间件项目。缓存

Apache ShardingSphere 从成为孵化器项目,到毕业成为顶级项目用时17个月。期间,完成了产品从分库分表中间件转变为了分布式数据库生态平台的升级。目前已在 gitHub 上收获 11000+ 关注度、140+ 公司落地的成功案例。社区运营方面,从孵化前的30+贡献者,到如今有超过130个贡献者。安全

image.png
Apache ShardingSphere 并非一款产品的名称,它是_一套开源的分布式数据库中间件解决方案组成的生态圈,_由 JDBC、Proxy 和 Sidecar(规划中) 3 款相互独立,却又可以混合部署配合使用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理功能,可适用于如 _Java 同构、异构语言、_云原生等各类多样化的应用场景。服务器

Apache ShardingSphere 生态圈架构以下图所示:
image.png架构

总体核心功能将组成一个闭环,它不只为你们提供最为基础和核心的数据分片和分布式事务功能,同时针对以 ShardingSphere 为中心的整个分布式数据库系统,提供数据库治理的功能,例如配置信息动态_统一管理、调用链与拓扑图、高可用管理、数据脱敏安全、权限控制_等强大的管理功能。并发

此外,ShardingSphere 针对不一样的数据库,例如 MySQL、Oracle、PostgreSQL、SQL Server 提供多模式链接的支持,真正屏蔽底层数据库选型的影响,作到不管使用何种数据库均可在用户无感知状况下进行数据分片、分布式事务、数据库治理的功能操做。框架

管控界面模块旨在为用户提供清晰可见的信息查看、配置更新管理、统计报表等功能。

在接入端部分,为了知足不一样用户针对不一样场景的需求,ShardingSphere 提供了多款接入端,包括Sharding-JDBCSharding-Proxy 和 _Sharding-Sidecar__(规划中)_:

  • Sharding-JDBC 是一款轻量级的 Java 框架,在 JDBC 层提供上述核心功能,使用方式与正常的 JDBC 方式一模一样,面向 Java 开发的用户。
  • Sharding-Proxy 是一款实现了 MySQL 二进制协议的服务器端版本,你们能够把它当成升级版的 MySQL 数据库使用。独立部署后,便可按照正常 MySQL 操做方式来使用上述全部的核心功能。
  • Sharding-Sidecar 从 Service Mesh 的理念中应用而生,面向于云原生架构。

Apache ShardingSphere 是一个生态,它的开源基因注定它的发展开放自由、社区参与贡献。因此在设计它的架构时,会更加注意营造微内核与开发生态。

咱们提供各个方面的开放接口,以方便全部对此感兴趣的朋友能参与其中,贡献代码,成为 Apache 基金会项目的提交者。

Github地址:

https://github.com/apache/sha...

image.png
当前, ShardingSphere 已在京东落地不少大小业务,涉及到的业务场景复杂多样,这里只列举较为大型的系统,这些业务系统有的是重要程度较高,有的是业务较为新颖,以下图所示:
image.png
其中,_京东白条是京东金融的杀手级应用。_因为业务体量巨大,数据库不可避免地进行了水平拆分。拆分以后的数据节点规模达到了十万级别,是极度少见的金融级、高并发、海量数据并存的应用系统。为了追求性能极致以及代码的可控性,京东白条以前是在业务框架中,根据分片键替换数据库和表名称进行分片的。

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

虽然 ShardingSphere 经历了大量系统的检验,项目已经相对成熟,但面对国内乃至世界上屈指可数的京东金融王牌级产品,仍将是一次严峻的考验。面对京东白条这个量级的应用,ShardingSphere 为了知足白条业务对 TPS/QPS 的强制要求,作了多方面优化,主要为:

  • SQL 解析结果缓存;
  • JDBC 元数据信息缓存;
  • Bind 表 & 广播表的使用;
  • 自动化执行引擎 & 流式归并;

通过了一次次的优化与重构,如今 ShardingSphere 已经平稳地在白条生产环境运行,性能与原生 JDBC 几乎一致,GC 次数、资源消耗也未见异常。经历了京东白条的挑战,ShardingSphere 的稳定性也获得了进一步的提高。关注 ShardingSphere 的小伙伴们,大家对 ShardingSphere 更有兴趣了吗?

2020 年 7 月 30 日- 8月 1 日,2020 年Cloud Native + Open Source Virtual Summit China 中国峰会将首次以线上形式召开。做为 CNCF 云原生基金会白金会员,今年京东智联云将继续在大会中亮相,不只带来多场精彩演讲,还将经过京东智联云云上展厅,近一步展现_京东云原生技术动态与前沿技术。_您能够来云上展厅更近一步了解 ShardingSphere 以及京东在云原生方面的技术实践。
image.png

参考资料:

https://www.oschina.net/quest..._2316036?sort=time

https://github.com/apache/sha...

点击"阅读原文",了解更多京东云原生之路

image.png

相关文章
相关标签/搜索