分布式事务
文章平均质量分 80
Alexon Xu
working、thinking、learning、sharing
展开
-
Sharding-JDBC分库分表-分布式事务-5
分库分表必然会涉及到分布式事务的问题,关于这方面,sharding JDBC为用户提供了两种分布式事务解决方案:XA事务和BASE事务,这两个的区别是:XA事务,追求强一致性,锁定的资源范围比较大,是个并发量要求不高、事务锁定时间短的场景;而BASE事务是一种柔性事务,它追求的是最终一致性,对资源锁定范围小,适合高并发的场景。sharding JDBC分布式事务介绍。原创 2023-09-12 22:46:51 · 429 阅读 · 0 评论 -
Redisson原理
1、场景假设场景,多个线程并发(模拟并发)对库存数量进行扣减,现将库存预置在redis中,然后开启多线程对库存进行扣减private static final String PRODUCT = "MoonCake";private static final String PRODUCT_STOCK = PRODUCT + "Stock";@Autowiredprivate RedissonClient redissonClient;@Autowiredprivate RedisTempla原创 2022-01-12 14:53:57 · 1193 阅读 · 0 评论 -
分布式事务解决方案
1 DTP5.2 2PC模型整个事务分为Prepare和Commit阶段:Prepare->Commit事务执行成功时:Prepare阶段Commit阶段事务执行失败时:Prepare阶段Commit阶段两阶段模型的问题:同步阻塞问题:事务在执行过程中,所有参与事务的节点都会对其占用的公共资源加锁,导致其他访问公共资源的进程或线程阻塞单点故障问题:如果事务管理器发生故障,则资源管理器会一致阻塞数据不一致问题:如果在Commit阶段,由于网络或部分资源管理器发生故障,原创 2022-01-03 14:59:32 · 487 阅读 · 0 评论 -
spring事务支持
spring事务spring基于AOP实现了事务管理的功能。Spring启动时会创建相关的bean对象,如果扫描到@Transactional注解的类或方法,会根据@Transactional注解相关的参数进行配置注入,在代理对象中会处理相应的事务,对事务进行管理。在默认情况下,方法抛出RuntimeException时回滚事务,也可以手动指定事务回滚的异常类型,如:@Transactional(rollbackFor=Exception.class)spring事务的三大核心接口:Platf原创 2022-01-03 14:50:06 · 248 阅读 · 0 评论 -
MYSQL分布式事务支持
2.1 并发带来的问题更新丢失(脏写):对于同一行数据,一个事务对该行数据的更新操作覆盖了其他事务对该行数据的更新操作脏读:一个事务读取了另一个事务未提交的数据,解决办法:写完之后再读不可重复读:同一个事务中,使用相同的查询语句,在不同时刻读取到的结果不一致,解决办法:先读后写幻读:同一个事务中,前后两次读取同一个范围内数据的记录数不一致,解决办法:先读后写2.2 幻读和不可重复读的区别不可重复读重点在更新和删除,幻读的重点在插入在可重复读隔离级别中,SQL语句第一次读取到数据后,会将相原创 2022-01-03 14:48:35 · 629 阅读 · 0 评论 -
分布式事务基础概念
1 事务基础1.1 事务特性ACID:Atomic原子性,Consistency一致性,Isolation隔离性,Duration持久性Atomic原子性: 构成事务的所有操作,要么全部成功,要么全部失败,不存在部分成功,部分失败的情况Consistency一致性:事务执行前后,数据始终处 于一致的状态Isolation隔离性:并发执行的两个事务之间互不干扰,一个事务执行过程中不能看到其他事务运行的中间状态(MySql通过锁和MVCC机制来保证事务的隔离性)Duration持久性:事务提交完成原创 2022-01-03 14:45:30 · 462 阅读 · 0 评论