需要背诵的理论

ACID:

  A:原子性(atomicity),原子性是指数据库事务执行的原子性,要么一起成功,要么一起失败回滚。
  C:一致性(consistency),在acid中最重要的就是一致性,其他都是为了保证一致性的正确。一致性是指在事务开始时数据是一致的,事务结束后数据也是一致的,合法的。在多线程的情况下两个原子性事务同时操作一条数据,两个原子性事务是成功的,但是最终结果可能被覆盖,不满足一致性,所以加入了事务的隔离性。
  I:隔离性(Isolation),事务的执行是互不干扰的。数据库对事务定义了四种隔离级别,读未提交、读已提交、可重复读、串行化。
  D:持久性(durability),持久性是指事务完成之后,该事务对数据库的修改永久的保存在数据库。


CAP:
  C:一致性(consistency),在分布式系统中,同一时间所有的数据备份都是一样的。
  A:可用性(availability),在集群环境中,部分节点故障,集群整体还能保住系统可用。
  P:分区容错性(partition tolerance),分区容错性是指系统在分布式环境中每个节点可能处于不同的子网络之中,有可能出现通讯失败的问题,这个是在系统设置的时候必须考虑的问题,所以P在分布式系统中是一定存在的。至于说C和A的矛盾点在于有可能通信失败。


BASE:

  BA:基本可用(Basically available),指分布式系统在出现故障时,可以牺牲部分可用性来保证系统的稳定性,比如部分用户被引流到降级页面或者排队等待。
   S:软状态(soft state),指中间过渡状态,不影响系统整体的可用性,比如支付下单时会有一个预支付状态,等完成支付回调后修改为已支付状态。
   E:最终一致性(Eventually consistent),最终一致性是指在一段时间后数据经过同步处理达成一致状态,如“预支付”状态最终会被自动改成“支付成功”或“支付失败”。


2PC:

  二阶段提交,准备阶段,开启各个服务的事务,确保每个服务都能正常提交。提交阶段,通过事务协调者发送全局提交通知,最后所有节点返回处理结果,完成事务。
问题:1、性能问题,整个事务提交过程中每个节点都是阻塞的,只有事务提交后才会释放资源。2、事务协调者故障,整个二阶段提交都依赖协调者,一旦故障可能导致收不到提交或回滚的消息。3、丢失消息和数据不一致,在第二个阶段如果局部网络发生故障可能导致部分事务参与者没有收到提交或回滚的指令。


3PC:

  三阶段提交,第一步,先询问是否可以完成事务,第二步,事务预处理,第三步,提交事务,相比较二阶段提交引入了超时机制,二阶段只有事务协调者有超时机制,三阶段的事务发起者 也有超时机制,避免了长时间等待,占领资源。但是还是会存在数据不一致情况的发生。


TCC:

  TCC又称补偿事务,try阶段主要是对业务系统做检测和资源预留,confirm阶段对事务进行提交,cancel阶段取消业务操作事务回滚。TCC实现起来比较复杂,需要对每个分支的代码都实现TCC三个操作。

 

你可能感兴趣的:(需要背诵的理论)