事务,分布式系统实现事务

1.事务概念
事务是指逻辑上的一组操作,组成该操作的各个单元,要么全部执行成功,要么全部执行失败; 只有全部执行成功后,事务才会提交, 若有一个单元执行失败,那么所有数据都会通过回滚自动恢复.(**回滚机制:**当事务内部有一个操作执行失败后,那么将会撤销所有已完成的更新操作)
2.事务的四大特性
(1)原子性–即不可分割性,事务里的操作要么全执行,要么都不执行.
(2)一致性(可串性)–事务执行前后,数据始终处于合法状态,例如转账操作:执行前后,双方的金额之和要保持一致.
(3)持久性–事务一旦执行成功提交,对数据的修改是永久性的,即使提交后出现任何故障都不会影响事务的正确性.
(4)隔离性–多个事务并发执行时,各个事务内部操作互相隔离,互不影响.
隔离性就是解决并发带来的一系列问题;
①脏读;可以读取到未提交的数据,有可能是错误数据;避免脏读,可以在给写操作"加锁",提高隔离性,降低并发性;
②不可重复读:一个事务内,两次读到的数据不一样,:给读操作"加锁",即在读取数据的时候不允许修改;
③幻读: 多次查询返回的结果集不同,:解决幻读问题就进一步提升隔离性,即完全"串行化",事务一个接着一个执行,此时没有并发执行.
隔离级别:
read uncommitted:允许读取未提交的数据,并行最大,隔离最低,有脏读问题;
read commit:不允许读未提交的数据,避免脏读,存在不可重复读问题,隔离性提高;
repeatable:避免不可重复度,存在幻读;
serializable:严格串行执行.
1.事务该如何实现?
事务的实现基于数据库存储引擎,事务的隔离性通过加锁实现; 一致性,原子性,持久性通过事务日志实现.
(存储引擎:存储文件的各种不同的技术和相关功能称为数据库存储引擎; 事务日志: 不同于数据库文件的文件,数据的更改都存储在事务日志里.)

2.分布式系统如何实现事务?
分布式事务用于在分布式系统中保证不同节点的数据的一致性 ;
主要是XA分布式协议,主要包含两阶段提交(2PC)和三阶段提交(3PC);
XA协议包含两个角色:事务协调者和事务参与者;
2PC 过程:
第一阶段 事务协调者会向参与者发送prepare(准备)请求;各个节点收到指令后开始执行事务有关的操作,完成之后,暂不提交,而是向调用者返回"完成",当调用者接收到所有完成消息后进入第二阶段;
第二阶段 : 调用者向所有参与者发送"commit"请求,然后参与者开始提交,提交成功后,释放锁资源,然后会向调用者返回"完成",当调用者接收到所有"完成"消息,分布式事务便是成功了.

3PC在两阶段提交基础上增加了CanCommit阶段,并增加了超时机制,一旦事务参与者长时间没有收到协调者的Commit请求,便会自动进行本地提交.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值