ShardingSphere 是一套开源的分布式数据库中间件解决方案组成的生态圈,它由 Sharding-JDBC、Sharding-Proxy 和 Sharding-Sidecar(打算中)这 3 款互相独立的产品组成。他们均提供标准化的数据分片、分布式事务和数据库治理性能,可实用于如 Java 同构、异构语言、云原生等各种多样化的利用场景。
ShardingSphere 定位为关系型数据库中间件,旨在充沛正当地在分布式的场景下利用关系型数据库的计算和存储能力,而并非实现一个全新的关系型数据库。它与 NoSQL 和 NewSQL 是并存而非互斥的关系。NoSQL 和 NewSQL 作为新技术摸索的前沿,放眼将来,拥抱变动,是十分值得举荐的。反之,也能够用另一种思路对待问题,放眼将来,关注不变的货色,进而抓住事物本质。关系型数据库当今仍然占有微小市场,是各个公司外围业务的基石,将来也难于撼动,咱们目前阶段更加关注在原有根底上的增量,而非颠覆。
ShardingSphere 曾经在 2020 年 4 月 16 日从 Apache 孵化器毕业,成为 Apache 顶级我的项目。欢送通过 shardingsphere 的 dev 邮件列表与咱们探讨。
简介
Sharding-JDBC
定位为轻量级 Java 框架,在 Java 的 JDBC 层提供的额定服务。它应用客户端直连数据库,以 jar 包模式提供服务,无需额定部署和依赖,可了解为增强版的 JDBC 驱动,齐全兼容 JDBC 和各种 ORM 框架。
- 实用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或间接应用 JDBC。
- 反对任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, Druid, HikariCP 等。
- 反对任意实现 JDBC 标准的数据库。目前反对 MySQL,Oracle,SQLServer,PostgreSQL 以及任何遵循 SQL92 规范的数据库。
Sharding-Proxy
定位为透明化的数据库代理端,提供封装了数据库二进制协定的服务端版本,用于实现对异构语言的反对。目前先提供 MySQL/PostgreSQL 版本,它能够应用任何兼容 MySQL/PostgreSQL 协定的拜访客户端 (如:MySQL Command Client, MySQL Workbench, Navicat 等) 操作数据,对 DBA 更加敌对。
- 向应用程序齐全通明,可间接当做 MySQL/PostgreSQL 应用。
- 实用于任何兼容 MySQL/PostgreSQL 协定的的客户端。
Sharding-Sidecar(TODO)
定位为 Kubernetes 的云原生数据库代理,以 Sidecar 的模式代理所有对数据库的拜访。通过无核心、零侵入的计划提供与数据库交互的的啮合层,即 Database Mesh,又可称数据网格。
Database Mesh 的关注重点在于如何将分布式的数据拜访利用与数据库有机串联起来,它更加关注的是交互,是将横七竖八的利用与数据库之间的交互无效的梳理。应用 Database Mesh,拜访数据库的利用和数据库终将造成一个微小的网格体系,利用和数据库只需在网格体系中对号入座即可,它们都是被啮合层所治理的对象。
混合架构
Sharding-JDBC 采纳无中心化架构,实用于 Java 开发的高性能的轻量级 OLTP 利用;Sharding-Proxy 提供动态入口以及异构语言的反对,实用于 OLAP 利用以及对分片数据库进行治理和运维的场景。
ShardingSphere 是多接入端独特组成的生态圈。通过混合应用 Sharding-JDBC 和 Sharding-Proxy,并采纳同一注册核心对立配置分片策略,可能灵便的搭建实用于各种场景的利用零碎,架构师能够更加自在的调整适宜于以后业务的最佳零碎架构。
性能列表
数据分片
- 分库 & 分表
- 读写拆散
- 分片策略定制化
- 无中心化分布式主键
分布式事务
- 标准化事务接口
- XA 强统一事务
- 柔性事务
数据库治理
- 配置动态化
- 编排 & 治理
- 数据脱敏
- 可视化链路追踪
- 弹性伸缩(布局中)
我的项目状态