常见库路由策略:
以用户行政地域分库(地域一般是410000等形式)
userID + region区域 复合使用
常见表路由策略:
Range分片
?以ID区间路由,如[0-10000000]写入table_0
以业务表日期区间进行路由,如:table_202004(适合数据归档业务场景,本质是冷热分离)
Hash分片
一致性hash:hash mod 2^32-1
日期(8位)+平台ID(2位)+支付方式(2位)+原子自增(6位)
雪花算法
大公司的主键生成服务(如美团的Leaf)
原理:SPI (service provider interface服务提供接口)
实现:在resources下创建META-INF/services目录
创建文件:org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator
在文件当中配置你自己的主键生成Java文件包路径
如:com.zhangjiang.zhangjiangmall.spi.OrderByRedisKeyGenerator
XA:核心原理是2PC两阶段提交
实现框架
1 <dependency> 2 3 <groupId>org.apache.shardingsphere</groupId> 4 5 <artifactId>sharding-transaction-xa-core</artifactId> 6 7 <version>4.0.0</version> 8 9 <exclusions> 10 11 <exclusion> 12 13 <artifactId>slf4j-api</artifactId> 14 15 <groupId>org.slf4j</groupId> 16 17 </exclusion> 18 19 </exclusions> 20 21 </dependency>
TransactionTypeHolder.set(TransactionType.XA);
原文:https://www.cnblogs.com/powerZhangFly/p/13905099.html