首页 > 其他 > 详细

你拍一我拍一,分布式事务听一听(一)

时间:2020-10-31 09:50:47      阅读:74      评论:0      收藏:0      [点我收藏+]

常用分库分表策略

常见库路由策略:

  • userID分库(最常见也是最有效的分库方式)
  •  以用户行政地域分库(地域一般是410000等形式)

  • userID + region区域 复合使用

 

常见表路由策略:

 

Range分片

 

  • 以业务表ID 取mod分表
  • ?ID区间路由,如[0-10000000]写入table_0

  • 以业务表日期区间进行路由,:table_202004(适合数据归档业务场景,本质是冷热分离)

Hash分片

  • 多字段组合路由,hash(key0,key1,key2...) + mod
  • 一致性hash:hash mod 2^32-1

常用分布式全局唯一主键策略

  1. UUID
  2. 日期(8位)+平台ID(2位)+支付方式(2位)+原子自增(6位)

  3. 雪花算法

  4. 大公司的主键生成服务(如美团的Leaf)

Sharding分库分表自定义分布式主键策略

 

原理:SPI (service provider interface服务提供接口) 

实现:在resources下创建META-INF/services目录

创建文件:org.apache.shardingsphere.spi.keygen.ShardingKeyGenerator

在文件当中配置你自己的主键生成Java文件包路径

如:com.zhangjiang.zhangjiangmall.spi.OrderByRedisKeyGenerator

XA原理与实现

XA:核心原理是2PC两阶段提交

 

实现框架

 

  • Atomikos(sharding默认使用)
  • bitronix

 

  • narayana

技术分享图片

 

 

开启XA事务

1、引入XA事务依赖包

 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>

2、开启分布式事务

TransactionTypeHolder.set(TransactionType.XA);

 

 

你拍一我拍一,分布式事务听一听(一)

原文:https://www.cnblogs.com/powerZhangFly/p/13905099.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!