ShardingSphere 使用指南_shardingsphere使用-CSDN博客
1.1 ShardingSphere 简介
Apache ShardingSphere 是一款开源的分布式数据库中间件生态系统,旨在将现有的数据库转变为分布式数据库解决方案。它通过数据分片、读写分离、分布式事务和数据加密 等功能,增强了原有数据库的能力。ShardingSphere 提供了 ShardingSphere-JDBC 和 ShardingSphere-Proxy 两种核心组件,分别适用于不同的应用场景
1.2 分布式数据库的挑战与解决方案
在分布式数据库环境中,主要面临以下挑战:
数据一致性:由于数据分布在多个节点上,确保各节点间的数据一致性变得复杂。
分布式事务:跨节点的事务处理需要协调多个节点,增加了事务管理的难度。
运维复杂性:分布式架构的部署、监控和故障排查比单体架构更为复杂。
为应对这些挑战,ShardingSphere 提供了以下解决方案:
数据分片:将数据水平拆分到多个节点上,提升系统的扩展性和性能。
读写分离:通过将读操作和写操作分离到不同的节点上,提升读写性能。
分布式事务:支持基于 XA 和 BASE 的混合事务引擎,确保跨数据源的数据一致性。
数据加密:提供透明的数据加密方案,保障数据安全。
2. ShardingSphere 的核心组件
Apache ShardingSphere 作为一款开源的分布式数据库中间件,提供了多种核心组件,以满足不同的应用场景需求。主要组件包括:
2.1 ShardingSphere-JDBC
ShardingSphere-JDBC 是一个轻量级的 Java 框架,旨在为 Java 应用程序提供增强的 JDBC 功能。它以 Jar 包形式集成到应用中,无需额外部署 ,直接在应用层实现数据分片、读写分离、分布式事务等功能。适用于任何基于 JDBC 的 ORM 框架,如 JPA、Hibernate、MyBatis、Spring JDBC Template 等。
2.2 ShardingSphere-Proxy
ShardingSphere-Proxy 是一个透明的数据库代理,支持 MySQL 和 PostgreSQL 协议。它以独立进程的形式运行,提供类似数据库的访问方式,适用于多语言开发环境。通过代理模式,应用程序无需修改即可实现数据分片、读写分离等功能,对 DBA 更加友好。
使用
java
# 配置真实数据源
dataSources:
ds0:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/ds0
username: root
password: your_password
ds1:
type: com.zaxxer.hikari.HikariDataSource
driverClassName: com.mysql.cj.jdbc.Driver
jdbcUrl: jdbc:mysql://localhost:3306/ds1
username: root
password: your_password
rules:
- !SHARDING
tables:
t_order:
actualDataNodes: ds${0..1}.t_order${0..1}
tableStrategy:
standard:
shardingColumn: order_id
shardingAlgorithmName: table_inline
databaseStrategy:
standard:
shardingColumn: user_id
shardingAlgorithmName: database_inline
shardingAlgorithms:
database_inline:
type: INLINE
props:
algorithm-expression: ds${user_id % 2}
table_inline:
type: INLINE
props:
algorithm-expression: t_order${order_id % 2}
订单表 t_order 做 分库 + 分表
- 按 user_id 分库 → 决定去 ds0 还是 ds1
- 按 order_id 分表 → 决定去 t_order0 还是 t_order1




