本系列的原码对应:ShardingSphere-5.0.0-beta
简介
1、Infra:可插拔架构设计、SPI机制、ShardingSphere核心流程
2、Proxy:Netty、Mysql协议、Postgresql协议
3、JDBC:JDBC接口、Spring命名空间、Spring Boot Starter
4、SQL-parser:ANTLR
5、Transaction:XA、BASE
6、Governance:分布式治理设计、Zookeeper和ETCD使用
7、Scaling:Binlog解析、ElasticJob使用
8、Agent:Java探针设计、bytebuddy使用、可观察性实战
9、Features:分片、读写分离、数据库高可用、加密、影子库等功能实现
shardingsphere-features模块是ShardingSphere中常用功能的浓缩。其下有两个核心模块:1、分片:sharding,2、读写分离:readwrite-splitting。
本次会从其中之一:分片开启原码的学习,下图为shardingsphere的分片原理,用于指导此次的学习。
代码初探
其下的shardingsphere-sharding模块是分库分表功能,今天就先从这个核心功能看起。
继续下探,准备从其核心代码:shardingsphere-sharding-core 开始研究
经过一阵头铁,发现要想窥其一二需要从之前的examples模块的sharding-raw-jdbc-example包进行下手,来到ShardingRawJavaConfigurationExample类,还是老套路需要修改DataSourceUtil类中的数据库链接配置。
1、ShardingSphereDataSourceFactory 创建DataSource :加载基础配置(分库、分表的Strategy)
2、sql解析引擎(ANTLR4):通过对sql进行解析:1. 解析语句,生成解析树 2. 检查语句中的关键词,表,字段是否存在。最终生成解析上下文。
3、sql路由引擎:根据解析上下文匹配用户配置的分片策略,并生成路由路径。
4、sql改写引擎:将 SQL 改写为在真实数据库中可以正确执行的语句。SQL 改写分为正确性改写和优化改写。
5、sql执行引擎:通过多线程执行器异步执行。
6、sql归并引擎:将多个执行结果集归并以便于通过统一的 JDBC 接口输出。结果归并包括流式归并、内存归并和使用装饰 者模式的追加归并这几种方式。
以上6部分是最基本的组成,原码后补,先写到这。。。。。。