Sharding-JDBC 是 ShardingSphere 项目中的一个子项目,旨在为 Java 应用程序提供数据库分片、读写分离等功能。下面是 Sharding-JDBC 的特性详解以及其主要模块划分:
特性详解:
-
数据库分片:支持水平分割数据表,将数据分布到不同的数据库或表中,以提升数据库性能和扩展性。
-
读写分离:自动将读操作路由到从库,将写操作路由到主库,以减轻主库负载。
-
分布式事务:提供分布式事务支持,确保在分片环境下的数据一致性。
-
分片策略:支持多种分片策略,包括精确分片、范围分片等,可以根据业务需求选择适合的策略。
-
读写分离策略:支持权重、随机、轮询等多种读写分离策略,可以灵活配置选择从库。
-
多数据源支持:可以配置多个主库和从库,实现不同数据源的读写分离和分片。
-
灵活配置:支持 XML 配置和 Java 配置,提供丰富的配置选项,满足不同场景的需求。
-
自动化分片迁移:在数据扩容或缩减时,自动迁移数据到新的分片中,保证数据的完整性。
-
跨分片查询:支持查询操作涉及多个分片的情况,以及分片间的聚合操作。
模块划分:
Sharding-JDBC 的主要模块包括:
-
核心模块(Core):实现了核心的分片和读写分离功能,包括数据源管理、分片规则解析、SQL 解析和路由等。
-
代理模块(Proxy):提供了一个代理层,将 SQL 解析、路由和执行与应用解耦,通过代理层来实现分片和读写分离。
-
SPI 扩展模块(SPI):提供了扩展机制,可以自定义分片算法、读写分离规则等。
-
引导模块(Bootstrap):用于初始化 Sharding-JDBC,加载配置并初始化相关组件。
-
配置模块(Config):负责解析配置文件,生成相应的配置对象,用于初始化 Sharding-JDBC。
-
连接池模块(DataSource):封装了数据源的管理,支持主库和从库的切换和管理。
-
路由模块(Router):负责根据分片规则和 SQL 解析结果,将 SQL 路由到相应的分片或库。
-
SQL 解析模块(Parsing):解析 SQL 语句,获取其中的分片键等信息。
以上模块共同协作,实现了 Sharding-JDBC 的各项功能。使用 Sharding-JDBC 时,可以根据自己的需求和业务场景,灵活配置和使用这些模块。详细的配置和使用方法可以参考 Sharding-JDBC 的官方文档。