分布式事务的全面解析
1. 引言
在日常生活中,分布式事务无处不在。例如,Amy 早上醒来,打算从她在科罗拉多州的储蓄账户转账 200 美元到她在爱荷华市的支票账户,因为后者余额过低,无法支付公寓租金。她登录家用电脑执行转账操作,该操作转化为以下两个步骤:从科罗拉多州银行账户 4311182 中取出 200 美元,将这笔钱存入爱荷华州银行账户 6761125。然而,第二天她支付租金的支票却被退回。经检查发现,200 美元已从她的科罗拉多账户扣除,但由于爱荷华市的服务器故障,这笔钱并未存入她的爱荷华账户。
这个例子凸显了事务的重要特性——原子性,即一系列服务器操作要么全部执行,要么都不执行。Amy 的银行操作违反了事务的原子性,同时也违背了一致性原则,即在转账操作期间,她账户的总金额应保持不变。当一个事务的所有操作都成功完成且状态得到适当更新时,该事务提交;否则,事务将中止,所有操作都不会发生,系统将保留旧状态。
在现实生活中,无论服务器崩溃还是出现遗漏故障,所有事务都必须满足以下四个特性,统称为 ACID 特性:
- 原子性 :所有操作要么全部完成,要么都不执行。
- 一致性 :无论发生什么情况,数据库必须保持一致。就像 Amy 的账户总余额在转账过程中应保持不变。
- 隔离性 :如果多个事务并发运行,它们的执行效果应如同按某种任意顺序串行执行一样。在一个事务提交之前,其更新对其他事务不可见。
- 持久性 :一旦事务提交,其影响将是永久性的。
超级会员免费看
订阅专栏 解锁全文
236

被折叠的 条评论
为什么被折叠?



