Apache ShardingSphere实战

进度

开始时间:2022-07-03

笔记

产品概念

定位:关系型数据库中间件,数据库中间件

解决方案:1 数据分片 2 读写分离 3 分布式事务 4 数据脱敏 5 编排管理

分库分表带来问题:1 多数据库治理, 2 跨节点关联查询 3 跨节点分页和排序,4 全局唯一id,5 事务一致性,6 数据如何迁移?

微内核架构=内核系统+插件,为了提高扩展性。API面向业务开发人员,SPI面向框架开发人员。Java中的ServiceLoader

数据分片

数据分片5大核心概念(最核心概念):绑定表和广播表,分片策略和分片算法,强制路由和hint机制,分布式主键,连接模式,分片引擎

分片引擎包括:解析引擎,路由引擎,改写引擎,执行引擎,归并引擎。

归并类型:遍历,排序,分组,分页,聚合。归并实现:流式,内存,装饰者归并

绑定表:多个表按照同一个字段分片。 广播表:所有分片都存在的表。

唯一ID:雪花,美团Leaf,UUID,UidGenerator。SnowflakeShardingKeyGenerator

分片策略=分片算法+分片键(标准分片策略是单分片key,然后提供了=,in,>,<,between and) ShardingStrategy=ShardingAlgorithm+key

ShardingStrategy:ShardingAlgorithm = 1:n,StandardShardingStrateg包含了PreciseShardingAlgorithm和RangeShardingAlgorithm

Hint机制对主库强制路由,或者Hint机制强制路由访问目标库。Hint内容在HintManager里面。

读写分离

读写分离不支持多主库情况。

主库写入,从库负载均衡(Random,RoundRobin),MasterSlaveLoadBalanceAlgorithm

强制路由机制。

分布式事务

Saga:柔性事务

XA里面重要的是事务管理器(TM):atomikos,narayana,bitronix,RM,AP都是现有的。

TransactionType:Local,XA,BASE。

SeataAT是柔性事务。

强一致性事务XA,最终一致性事务BASE