事务
一般是指要做的或所做的事情。
在计算机术语中是指访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。
事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。
事务由事务开始(begin transaction)和事务结束(end transaction)之间执行的全体操作组成。
事务是恢复和并发控制的基本单位。
ACID
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
原子性(atomicity):一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
一致性(consistency):事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
隔离性(isolation):一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
持久性(durability):持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
CAP理论
分布式系统最基础的理论
在分布式系统中,
一致性(Consistency)、
可用性(Availability)
分区容忍性(Partition Tolerance)
3个要素最多只能同时满足两个,不可兼得。其中,分区容忍性又是不可或缺的。
(eureka 保证了可用性,实现最终一致性。)
(zookeeper CP,ookeeper在选举leader时,会停止服务,直到选举成功之后才会再次对外提供服务)
BASE 理论
核心思想:
基本可用(Basically Available):
指分布式系统在出现故障时,允许损失部分的可用性来保证核心可用。
软状态(Soft State)
指允许分布式系统存在中间状态,该中间状态不会影响到系统的整体可用性。
最终一致性(Eventual Consistency):
指分布式系统中的所有副本数据经过一定时间后,最终能够达到一致的状态。
分布式事务
- 2pc(两段式提交)
- 3pc(三段式提交)
- TCC(Try、Confirm、Cancel)
- 最大努力通知
- XA
- 本地消息表(ebay研发出的)
- 半消息/最终一致性(RocketMQ)