Apache ShardingSphere 定位为开源的分布式数据库中间件解决方案组成的生态圈,旨在充沛正当地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它通过关注不变,进而抓住事物本质。关系型数据库当今仍然占有微小市场,是各个公司外围业务的基石,将来也难于撼动,Apache ShardingSphere 目前阶段更加关注在原有根底上的增量,而非颠覆。
在聊起 Apache ShardingSphere 历史时,还要从它的前身—— Sharding-JDBC 开始。2015 年,现任 Apache ShardingSphere 我的项目 VP 的张亮和他的团队决定在 Java 的 JDBC 层植入代码,来达成开发成本最小化,自研开源的分布式数据库中间件我的项目 Sharding-JDBC。
在那之后,Sharding-JDBC 随着市场的需要不断更新,实现到 ShardingSphere,再到 Apache ShardingSphere 的转变,产品自身也从分库分表的 Java 开发框架演变为了分布式数据库生态体系。
2016 年开始 Apache ShardingSphere 正式开源,一直降级开发新性能、重构稳固微内核,并于2018 年 11 月进入 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 个贡献者。
Apache ShardingSphere 并不是一款产品的名称,它是_一套开源的分布式数据库中间件解决方案组成的生态圈,_由 JDBC、Proxy 和 Sidecar(布局中)3 款互相独立,却又可能混合部署配合应用的产品组成。它们均提供标准化的数据分片、分布式事务和数据库治理性能,可实用于如 _Java 同构、异构语言、_云原生 等各种多样化的利用场景。
Apache ShardingSphere 生态圈架构如下图所示:
整体外围性能将组成一个闭环,它不仅为大家提供最为根底和外围的数据分片和分布式事务性能,同时针对以 ShardingSphere 为核心的整个分布式数据库系统,提供数据库治理的性能,例如配置信息动静_对立治理、调用链与拓扑图、高可用治理、数据脱敏平安、权限管制_等弱小的治理性能。
此外,ShardingSphere 针对不同的数据库,例如 MySQL、Oracle、PostgreSQL、SQL Server 提供多模式连贯的反对,真正屏蔽底层数据库选型的影响,做到无论应用何种数据库都可在用户无感知状况下进行 数据分片、分布式事务、数据库治理 的性能操作。
管控界面模块旨在为用户提供清晰可见的 信息查看、配置更新治理、统计报表 等性能。
在接入端局部,为了满足不同用户针对不同场景的需要,ShardingSphere 提供了多款接入端,包含Sharding-JDBC、Sharding-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…
以后,ShardingSphere 已在京东落地很多大小业务,波及到的业务场景简单多样,这里只列举较为大型的零碎,这些业务零碎有的是重要程度较高,有的是业务较为新鲜,如下图所示:
其中,_京东白条是京东金融的杀手级利用。_因为业务体量微小,数据库不可避免地进行了程度拆分。拆分之后的数据节点规模达到了十万级别,是极度少见的金融级、高并发、海量数据并存的利用零碎。为了谋求性能极致以及代码的可控性,京东白条之前是在业务框架中,依据分片键替换数据库和表名称进行分片的。
随着业务的倒退,通过业务框架进行分片的形式,使得代码的保护老本一直攀升。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 以及京东在云原生方面的技术实际。
参考资料:
https://www.oschina.net/quest…_2316036?sort=time
https://github.com/apache/sha…
点击 ” 浏览原文 ”,理解更多京东云原生之路