分布式事务基础概念

分布式事务相比本地事务有很多额外的情况产生交互异常:

  1. 分布式中某个机器宕机
  2. 网络异常
  3. 发布的消息丢失
  4. 发送的消息不保证接受顺序(消息在传递与传输过程中产生不确定延迟)
  5. 数据错误
  6. 不可靠的TCP连接
  7. 某个节点的存储数据丢失等

本地事务一般通过先写日志(redo), 后写数据库的方式避免一些异常发生,或者根据日志回滚数据.

本地数据库的ACID原则

本地数据库有ACID原则:原子性,一致性,隔离性,持久性。
1. 原子性:某个事务的所有操作要么全都完成,要么全都不完成,不存在中间的停滞操作
2. 一致性:一个事务如果是多个并发,系统也必须如同 串行一样操作。事务必须始终保持系统处于一致的状态
3. 隔离性:如果有两个事务在同一时间内执行相同的功能,那么对于每个事务,应该认为此时只有一个事务正在执行,在必要的时候对多个事务必须进行序列化。
4. 持久性:事务完成以后确保完成的状态以及结果可以持久化的保存在数据库之中,不会回滚。

分布式数据库的CAP原则

对于分布式数据库择优CAP原则:一致性,可用性,分区容错性

  1. 一致性:在分布式系统中的所有数据备份,在同一时刻是同样的值
  2. 可用性:在集群的某个结点故障之后,整体集群是否还能相应客户端的读写请求
  3. 分区容错性:系统如果不能再一定时限内打成一致性,则只能在一致性和可用上作出选择。

对于这个cap理论,表明在分布式存储体系中,CAP最多只能实现其中两点。由于网络传输的延迟与丢包现象客观存在,所以其实分区容错性是必须要实现的,所以各个不同的分布式数据库实际上是cp对或者是ap对。我们只能在一致性和可用性上进行权衡。

分布式数据库由CAP原则扩展而来的BASE理论

由于分布式的特点,我们往往会追求高可用,那么如何去实现高可用的数据库,BASE理论是对CAP理论的一个扩充:

  1. 基本可用:指分布式系统在出现不可预知的故障的时候,允许损失部分性能——但不是完全不可访问。(可以接受的访问延迟,或者跳转到降级页面(秒杀))
  2. 软状态:与硬状态相对,允许系统中的数据存在中间状态,并认为该中间状态不影响系统的整体可用性。(例如分布式的各个副本之间的同步过程就是软状态)
  3. 最终一致性:强调在系统中的所有副本,在经过一段时间后,最终能够达到一个一致性的状态,而不需要实时保证数据的强一致性。
    这套理论的核心思想是:我们无法做到强一致性,但是我们可以根据自身的业务特点选择合适的方式,使得整个业务最终处于一致性状态。

在实际工程中,最终一致性主要有五个变种:

  1. 因果一致性:如果进程A在完成了某项操作通知了进程B,那么进程B之后再对该数据项进行访问后都应该能获取到A更新的最新值,之后的操作也应该基于A的最新值。如果进程C没有收到进程A的通知,那么它在对同一数据进行访问或操作没有该限制
  2. 读己之所写:进程A在更新一个数据项之后,他自己总是能够访问到更新过得最新值,而不会看到旧值。对于单个数据的获取者而言获得的数据一定不会比上一次旧
  3. 会话一致性:其将系统数据的访问框定在了一个会话中,保证了会话内所有事务保持“读己之所写”的一致性,可以保证客户端在会话内的一致性
  4. 单调读一致性:指如果一个进程访问了某个数据项的某个值之后,该进程的后续对该数据项的访问都不应比这个值旧
  5. 单调写一致性:一个系统需要能够保证来自同一个进程的写操作被顺序的执行。

在实际实现过程中,可以将其中的几个变种任意的组合起来。在现代关系型数据库中,都采用了最终一致性模型。现代关系型数据库大多都会采用同步或者异步的方式进行备份。同步方式是指强一致性,当一个事务完成了主备库均完成了事务数据达到了一致。异步方式是主库完成了事务,备库在一段时间内对主库进行同步,而这个过程往往存在延迟,这取决于 事务日志的传输时间长短。
那么,如果由于某些原因日志无法传达或过晚到达了备库,那么备库的获取到的数据就是旧的,而出现了不一致的情况。后续可以通过多次重试等方式使其达到一致性。

小结

BASE理论面向的是大型高可用分布式数据库,与传统事务的ACID的强一致性不同的是,提出牺牲一部分一致性而获得高可用性。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值