分布式事务概览

分布式事务概览 分布式理论 前置理论知识: CAP C 强一致性 主节点写入新的数据,必须能从从节点读到最新数据,否则错误 A 可用性 保证每个服务尽可能都能响应结果 P 分区容忍性 正常情况下,服务节点之间通信是正常的,可能因为网络原因,节点之间通信失败,将整个服务分成了多个区,仍然可以保证整个服务的运行 BASE basically Available 基本可用 系统出现故障,保证核心功能可用 Soft state 软状态 出现一个中间状态,表示动作进行中 eventually consistent 最终一致性 2pc 两阶段提交(协议) 主要角色 事务管理器(协调者 tm) ...

July 19, 2023 · 4 min

mysql之事务

事务 需要保证 原子性 、 隔离性 、 一致性 和 持久性 的一个或多个数据库操作称之为一个 事务 原子性(Atomicity) 一致性(Consistency) ​ 保证一致性的努力: ...

February 25, 2022 · 3 min

多线程下的事务数据问题

前几天遇到的线上问题,防止以后犯这样的错误,特别写下来记录下!:s 现场问题:一个业务流程的接口,包含五个左右的操作步骤(a,b,c,d,e,每个步骤都是原子性),第三方调用这个接口,其中有两次请求(两次请求间隔几十毫秒),A请求没问题,B请求的d步骤没有执行! ...

February 18, 2022 · 4 min

spring声明式事务失效原因

事务失效的原因 数据库引擎不支持事务 (这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB) 没有被 Spring 管理 方法不是 public的 – 该异常一般情况都会被编译器帮忙识别 When using proxies, you should apply the @Transactional annotation only to methods with public visibility. If you do annotate protected, private or package-visible methods with the @Transactional annotation, no error is raised, but the annotated method does not exhibit the configured transactional settings. Consider the use of AspectJ (see below) if you need to annotate non-public methods. ...

October 8, 2021 · 1 min

spring事务实战

事务隔离级别 PROPAGATION_REQUIRED 如果当前没有事务,就创建一个新事务,如果当前存在事务,就加入该事务,这是最常见的选择,也是Spring默认的事务传播行为。 一个service内,方法A和方法B事务隔离级别都是REQUIRED,insertAAndB方法无事务 @Override @Transactional(propagation = Propagation.REQUIRED) public void insertA() { User user = new User(); user.setAge(1); user.setName("test"); userDao.insert(user); // A方法抛异常 int i = 1/0; } @Transactional(propagation = Propagation.REQUIRED) public void insertB() { TUser user = new TUser(); user.setAge(1); user.setName("test"); tUserDao.insert(user); } @Override public void insertAAndB() { insertA(); insertB(); } ------------------分界线--------------------- @Test void insertAAndB() { // 一个service内 事务传播行为都是required 测试方法A有异常 方法A成功执行,方法B因为异常未执行 transactionTestAService.insertAAndB(); } 分析:方法A声明了事务,但是因为一个service内,方法 insertAAndB 调用了 方法A和方法B,属于自身调用,事务失效,所以方法A抛异常未回滚。 ...

October 8, 2021 · 2 min
总访问量 总访客数