【mysql-6】mysql分库分表+读写分离(shardingJDBC)

一:Sharding-JDBC 分库分表

1、Sharding-JDBC 是一款轻量级java框架,以jar形式提供服务,增强版JDBC。主要功能:
 
  • 数据分片: 分库分表; 读写分离; 分片策略; 分布式主键
  • 分布式事务: 标准化事务接口; XA强一致性事务; 柔性事务
  • 数据库治理: 配置动态化; 编排治理; 数据脱敏; 可视化链路追踪

2、Sharding-JDBC内部结构:

黄色部分:Sharding-JDBC的入口API,采用工厂方法的形式提供。目前两个工厂类:

  • ShardingDataSourceFactory支持分库分表、读写分离操作
  • MasterSlaveDataSourceFactory支持读写分离操作

蓝色部分:Sharding-JDBC的配置对象,提供灵活的配置方式。核心配置类:ShardingRuleConfifiguration,包含多个TableRuleConfifigurationMasterSlaveRuleConfifiguration

  • TableRuleConfifiguration:封装的是表的分片配置信息,有5种配置形式对应不同的Confifiguration类型。
  • MasterSlaveRuleConfifiguration:封装的是读写分离配置信息。

红色部分:Sharding-JDBC的内部使用类,不用管。

 

3、初始化流程:

  • 根据配置信息生成Configuration对象
  • 通过Factory转化为Rule对象
  • 通过Factory降Rule对象和DataSource对象封装,进行分库分表和读写分离操作

4、核心概念:

分片算法(ShardingAlgorithm
  • 范围分片算法:单一RangeShardingAlgorithm键作为分片键,BETWEEN AND、><>=<=进行分片的场景
  • 精确分片算法PreciseShardingAlgorithm : 单一键做分片键,应对 = 与 in 分片的场景
  • 复合分片算法ComplexKeysShardingAlgorithm: 处理使用多键作为分片键进行分片的场景
  • Hint分片算法HintShardingAlgorithm:对于分片字段非SQL决定,而由其他外置条件决定的场景,可使用SQL Hint灵活的注入分片字段
因为分片算法和实际业务紧密结合,所以以上这些算法都是接口,需要在使用时,实现相应的接口后做实际算法逻辑。
 
分片策略(ShardingStrategy

分片策略 =  分片键 + 分片算法。  目前提供5种:

标准策略StandardShardingStrategy: 
  • 只支持单分片键,提供对SQL语句中的=, >, <, >=, <=, INBETWEEN AND的分片支持。 支持两个分片算法
    • PreciseShardingAlgorithm: 必选。
    • RangeShardingAlgorithm: 可选 (sql如果有范围操作,不选会全库扫描,效率低)

复合策略ComplexShardingStrategy:

  • 支持多分片键,提供对SQL语句中的=, >, <, >=, <=, INBETWEEN AND的分片操作支持。由开发者自己实现分片策略。

行表达式策略InlineShardingStrategy(最简单常用,不需要使用分片算法,简单的表达式配置即可,下面会单独介绍行表达式使用)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值