sharding sphere

目录

sharding-sphere

兼容JDBC规范

image-20230419180940550

常见接口:

image-20230419181922820

image-20230419182557191

image-20230419182658077

image-20230420150637152

如何阅读源码

image-20230420163114580

image-20230420163251804

image-20230420163314903

image-20230420163400111

image-20230420163423535

image-20230420163016235

image-20230420162923505

image-20230420163640572

image-20230420163830293

微内核架构及实现

image-20230420164749549

image-20230420165017916

image-20230420165524211

可参考dubbo spi的增强:

  • 按需加载

  • 增加扩展类的 IOC 能力

  • 增加扩展类的 AOP 能力

  • 具备动态选择扩展实现的能力

  • 可以对扩展实现进行排序

  • 提供扩展点的 Adaptive 能力

解析引擎

image-20230420175200142

image-20230420175244119

image-20230420180226829

image-20230420180255883

image-20230420180746533

image-20230420180840437

image-20230420180953918

image-20230420181100207

image-20230420181253384

路由引擎

image-20230421104433038

image-20230421110625356

image-20230421110838308

image-20230421110902113

image-20230421111255483

image-20230421111453568

image-20230421113234469

image-20230421113401611

image-20230421113417758

image-20230421162204822

image-20230421162342312

改写引擎

image-20230421162552526

image-20230421164256548

改写引擎在设计上使用了装饰器模式,完成了从逻辑SQL到目标SQL的改写过程。

应用场景:

  • 自增主键
  • 表名改写
  • 数据脱敏

执行引擎

image-20230421165044227

image-20230421170300239

image-20230421170456791

image-20230421170953499

归并引擎

image-20230421172249113

image-20230421172314847

image-20230421172346650

image-20230421172448284

读写分离

image-20230421174338919

分布式事务

image-20230421174505227

public enum TransactionType {
    
    LOCAL,//本地事务
  	XA, // XA事务,需数据库提供支持
  	BASE //柔性事务,如seata
}

image-20230421175130074

image-20230421175459171

image-20230421175528257

image-20230421175553029

image-20230421175613616

JDBC规范本身并未提供事务管理器抽象,需自行实现事务管理器

JDBC使用事务的方式:

Connection conn = openConnection();
try {
    // 关闭自动提交:
    conn.setAutoCommit(false);
    // 执行多条SQL语句:
    insert(); update(); delete();
    // 提交事务:
    conn.commit();
} catch (SQLException e) {
    // 回滚事务:
    conn.rollback();
} finally {
    conn.setAutoCommit(true);
    conn.close();
}

sharding-sphere分布式事务使用方式:

@Transactional
@ShardingTransactionType(TransactionType.XA)//LOCAL,XA,BASE

数据脱敏

image-20230423141259001

image-20230423141806654

image-20230423142117091

配置中心

image-20230423142830824

注册中心

链路追踪

image-20230423150250862

image-20230423150543737

image-20230423150954948

image-20230423150823685

image-20230423151039211

image-20230423151100709

通过SPI机制在关键节点动态增加Hook以灵活增加功能(容器hook承载动态收集的SPI hook)

参考资料:

ShardingSphere 核心原理精讲

Dubbo SPI 扩展使用手册

Dubbo扩展点开发指南