1.ShardingSphere简介
Sharding-JDBC前生今世
Sharding-JDBC早先是当当网的一个叫张亮的程序员开发的。用来解决分库分表的问题。到2017年的时候才开始对外开源,这几年在大量社区贡献者的不断迭代下,功能也逐渐完善,现已更名为 ShardingSphere,2020年正式成为 Apache 软件基会的顶级项目。
官网中文地址:https://shardingsphere.apache.org/index_zh.html
2018 年 5 月,因为增加了 Proxy 的版本和 Sharding-Sidecar(尚未发布),Sharding-JDBC 更名为 Sharding Sphere,从一个客户端的组件变成了一个套件。
sharding sphere目前已经到5.X时代了,前4代迭代的过程如下:

sharding sphere 5包含如下新的特性:
- DistSQL
- 可插拔内核
- 数据迁移
记忆印记:
sharding-jdbc 已经改名叫shardingsphere jdbc了。
用来解决分库分表问题的
sharding sphere家族
ShardingSphere不但包括jdbc还有Proxy和Sidecar(规划中)三部分组成。这三个家族成员既能独立部署使用,还支持混合部署配合使用。ShardingSphere于2020年4月16成为Apache的顶级项目。
记忆印记:
ShardingSphere是一个套装,可以配合使用
ShardingSphere已经是Apache的顶级想了
ShardingSphere-JDBC介绍
定位为轻量级 Java 框架,在 Java 的JDBC 层提供的额外服务。它使用客户端直连数据库,以jar 包形式提供服务,无需额外部署和依赖,可理解为增强版的 JDBC 驱动,完全兼容 JDBC 和各种 ORM 框架。
- 适用于任何基于 JDBC 的 ORM 框架,如:JPA, Hibernate, Mybatis, Spring JDBC Template 或直接使用 JDBC;
- 支持任何第三方的数据库连接池,如:DBCP, C3P0, BoneCP, HikariCP 等;
- 支持任意实现 JDBC 规范的数据库,目前支持 MySQL,PostgreSQL,Oracle,SQLServer 以及任何可使用 JDBC 访问的数据库
ShardingSphere-JDBC功能架构图:

上图表达的意思:
-
ShardingSphere-JDBC是管理数据库的链接的,我们的业务代码通过它来操作数据库。
-
ShardingSphere-JDBC到数据库的线,理解成一个个规则,它是通过配置好的规则来操作数据库的。
-
RegisterCenter:可以理解成微服务中的配置中心nacos,通过在一个地方配置,使程序简化配置。
记忆印记:
是个jar包,那么就可以通过pom依赖进来
在jdbc层外包了一层,提供额外的服务
可通过配置中心简化配置
ShardingSphere-Proxy
定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL(兼容 openGauss 等基于 PostgreSQL 的数据库)版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户端(如:MySQL Command Client, MySQL Workbench, Navicat 等)操作数据,对 DBA 更加友好。
ShardingSphere-Proxy功能架构图:

上图表达的意思:
- ShardingSphere-Proxy是以单独的服务来独立运行的,好处就是可以公用配和连接池资源。
- 我们的应用不用再耦合ShardingSphere-JDBC,全部通过这个代理统一操作数据库。类mycat。
ShardingSphere-Sidecar(TO DO)
定位为 Kubernetes 的云原生数据库代理,以 Sidecar 的形式代理所有对数据库的访问。 通过无中心、零侵入的方案提供与数据库交互的啮合层,即 Database Mesh,又可称数据库网格。了解一下即可。
三大组件对比

ShardingSphere功能列表
- 功能列表
- 数据分片
- 分库 & 分表
- 读写分离
- 分片策略定制化
- 无中心话分布式主键
- 分布式事务
- 标准化事务接口
- XA强一致性事务
- 柔性事务
- 数据库治理
- 分布式治理(Sidecar中的功能,正在规划中)
- 弹性伸缩
- 可视化链路追踪
- 数据加密
真诚点赞 诚不我欺~