概要

  • 事务
  • BSAE理论
  • CAP理论
  • 全局事务介绍

事务

1.什么是事务

事务是应用程序中一系列严密的操作,所有操作必须成功完成,否则在每个操作中所做的所有更改都会被撤消

2.事务的特性

  • 一致性
    事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构都必须是正确的。

  • 原子性
    事务必须是原子工作单元。对于其数据修改,要么全都执行,要么全都不执行。

  • 持久性
    事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

  • 隔离性
    由并发事务所做的修改必须与任何其他并发事务所做的修改隔离。事务识别数据时数据所处的状态,或者是另一个并发事务修改它之前的状态,或者是第二个事务修改它之后的状态,事务不会识别中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

3.运行模式

  • 自动提交事务:每条单独的语句都是一个事务。
  • 显式事务:每个事务均以BEGIN TRANSACTION语句显式开始,以COMMIT或ROLLBACK语句显式结束。
  • 隐性事务:在上个事务完成时新事务隐式启动,但每个事务仍以COMMIT或ROLLBACK语句显式完成。

BASE理论

1.基本业务可用性

支持分区失败(允许部分服务异常)

  • 响应时间上的损失。正常情况下,一个在线搜索引擎需要在0.5秒之内返回给用户相应的查询结果,但由于出现故障,查询结果的响应时间增加了1~2秒
  • 系统功能上的损失。正常情况下,在一个电子商务网站上进行购物的时候,消费者几乎能够顺利完成每一笔订单,但是在一些节日大促购物高峰的时候,由于消费者的购物行为激增,为了保护购物系统的稳定性,部分消费者可能会被引导到一个降级页面

2.柔性状态(软状态)

软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时

3.最终一致性

  • 最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。

4.核心思想:

  • 即使无法做到强一致性,那么每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性
  • 原子性和持久性必须保证,只有适当降低一致性隔离性

CAP理论

1.一致性

all nodes see the same data at the same time

2.原子性

Reads and writes always succeed

3.分区容错性

the system continues to operate despite arbitrary message loss or failure of part of the system

分布式事务解决方案上 - 图1

选择 说明
CA 降低分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择
AP 降低一致性(这里说的一致性是指强一致性),加强分区容错性和可用性,现在很多分布式系统都是这么设计的,例如eureka
CP 降低可用性,追求一致性和分容错性,基本不会选择,如果网络出现问题会导致系统不可用,例如zookeeper

分布式系统中,分区容错性是一个最基本的要求。因为分布式系统中组件必须被部署在不同的节点上,因而服务间必须跨网络调用。对于分布式系统而言网络问题是必然会出现的,因此分区容错就成了每一个分布式系统中绕不去的坎,往往架构师们都在一致性和可用性中寻求平衡点

常见的分布式解决方案

1.刚性事务解决方案

  • 标准的分布式解决方案(全局事务)
    分布式事务解决方案上 - 图2
优缺点 分析
优点 严格的ACID
缺点 1. 效率非常的低,在全局事务方式下,全局事务管理器TM通过XA接口使用两阶段提交协议(2pc)与资源层(数据 库)交互时,数据被锁定的时间跨越了整个事务,直到全局事务结束 2. 业务规模越来越大时,2pc局限性越明显,系统可伸缩性会很差 3. XA协议系统开销大,只有支持XA协议的资源才能参与分布式事务

分布式系统中很少采取这种方案,刚性事务力度大,时间长,效率低.

2.柔性事务解决方案

请看下节