ShardingSphere之features模块

528 阅读2分钟

本系列的原码对应: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的分片原理,用于指导此次的学习。

image.png

代码初探

image.png

其下的shardingsphere-sharding模块是分库分表功能,今天就先从这个核心功能看起。

继续下探,准备从其核心代码:shardingsphere-sharding-core 开始研究

image.png

经过一阵头铁,发现要想窥其一二需要从之前的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部分是最基本的组成,原码后补,先写到这。。。。。。