当前位置: 首页 > news >正文

shardingsphere加载过程

 


一、关键组件说明

  1. @EnableSharding​ / ​ShardingAutoConfiguration​:Spring Boot 自动配置入口。

  2. ShardingSphereDataSource​:ShardingSphere 的入口 DataSource 实现。

  3. ShardingRule​:分片规则配置核心。

  4. ShardingSphereOptimizer​:SQL 优化器。

  5. ShardingEngine​:分片 SQL 执行引擎。

  6. SQLRouter​:SQL 分片路由器。


二、整体加载时序图


三、分阶段详细加载流程

阶段1:配置加载阶段(应用启动时)

​关键步骤详解​​:

  1. ​配置解析​​:

    # application.yml 配置示例
    spring:shardingsphere:datasource:names: ds0, ds1ds0: # 实际数据源配置...ds1: # 实际数据源配置...rules:sharding:tables:t_order: actualDataNodes: ds${0..1}.t_order_${0..1}databaseStrategy: # 分库策略tableStrategy:   # 分表策略
  2. ​规则构建​​:

    • 解析 actualDataNodes生成物理表映射。

    • 初始化分片算法(精确、范围、复合分片等)。

阶段2:SQL 执行阶段(运行时)

​路由阶段详细流程​​:

  1. ​SQL 解析​​:将 SQL 解析为抽象语法树,识别查询类型、表名、条件等。

  2. ​分片键提取​​:从 WHERE 条件中提取分片键值。

  3. ​路由计算​​:根据分片算法确定目标数据源和表。

    // 分片算法示例
    String actualTable = "t_order_" + (userId % 2); // 分表
    String actualDataSource = "ds" + (userId / 10 % 2); // 分库
  4. ​SQL 改写​​:将逻辑表名替换为物理表名。


四、核心扩展点加载时序

1. 自定义分片算法加载

​配置示例​​:

spring:shardingsphere:rules:sharding:shardingAlgorithms:order-db-algorithm:type: CLASS_BASEDprops:strategy: standardalgorithmClassName: com.example.OrderDatabaseShardingAlgorithm
2. 分布式序列生成器加载


五、Spring Boot 集成详细时序

自动配置类加载顺序:
  1. ShardingSphereAutoConfiguration​:主配置类

  2. ShardingSphereDataSourceConfiguration​:数据源配置

  3. ShardingRuleConfiguration​:规则配置

  4. PropertiesConfiguration​:属性配置

​代码层面的加载调用栈​​:

// 1. Spring Boot启动
SpringApplication.run() → ShardingSphereAutoConfiguration→ ShardingSphereDataSourceFactory.createDataSource()→ YamlShardingSphereDataSourceFactory.createDataSource()  // 解析YAML→ ShardingSphereDataSource()  // 创建数据源→ ShardingRule()  // 初始化分片规则→ Metadata()  // 元数据管理

六、常见问题定位时序

场景1:启动时报 Sharding rule configuration is invalid
  • ​时序定位​​:阶段1的第5步(规则验证)

  • ​检查点​​:

    • 分片算法配置是否正确

    • 实际数据节点映射是否存在

场景2:执行SQL时报 No database route info
  • ​时序定位​​:阶段2的第4步(路由计算)

  • ​检查点​​:

    • 分片键是否包含在查询条件中

    • 分片算法返回值是否在数据节点范围内

场景3:性能问题 Slow SQL
  • ​时序定位​​:阶段2的第7步(并行执行)

  • ​检查点​​:

    • 是否产生笛卡尔积路由(需要优化分片策略)

    • 结果归并是否内存溢出(大数据集分页优化)


七、关键配置参数影响时序

spring:shardingsphere:props:# 影响阶段2的第2步:SQL解析缓存sql-show: true# 影响阶段2的第7步:最大连接数max-connections-size-per-query: 1# 影响阶段2的第8步:结果集归并方式kernel-executor-size: 10

通过理解 ShardingSphere 的加载时序,可以更好地进行性能调优和问题排查!

http://www.dtcms.com/a/406766.html

相关文章:

  • MinerU介绍安装
  • 好的建设网站关于建立企业网站的方案内容
  • 在mac上面使用parquet-cli查看parquet文件
  • 织梦资讯门户网站模板公司成立后网站建设
  • linux入门4.4(DHCP和DNS服务器)
  • 存储卷备份策略在海外vps数据安全中的基础规范
  • 基于MATLAB的热晕相位屏仿真
  • 天津网站优化怎么样成都金牛区建设局网站
  • 惠州网站建设佳木斯自助个人免费网站
  • 学校网站源码html重庆seo哪个强
  • 基于Vue2的可视化大屏
  • AI+Decodo:构建智能电商价格监控系统的完整实战指南
  • 一般来说主键索引的树深度有几层?为什么是这个层数?
  • 【左程云算法笔记017】二叉树遍历递归写法
  • 加强门户网站建设的通知德州手机网站建设电话
  • 网站 备案 拍照系统开发过程中设计代码的原则为
  • 计算机网络---网络层
  • 前端学习-HTML
  • 电商网站建设综述全国建筑工人招工网
  • 北京网站优化步公司做网站都咨询哪些问题
  • VNCMD分解源程序
  • 深度学习(十二):多种激活函数
  • 在线骑行|基于SpringBoot+Vue的在线骑行网站设计与实现(源码+数据库+文档)
  • 《MyBatis进阶记:当字段名开始“叛逆“》
  • 如何筛选并下载高质量Landsat影像:
  • html网站列表怎么做茶叶网站建设目的
  • 让数据触手可及采用Chat2DB+cpolar重构数据库操作体验
  • 仿造别人的网站侵权吗建e全景效果图
  • 优选算法的寻踪契合:字符串专题
  • 光伏运维可视化大屏,解锁管理新方式