分布式事务

什么是分布式事务

分布式事务涉及到操作多个数据库的事务,分布式事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的不同节点上。一个分布式事务可以看作是由多个分布式的操作序列组成的,通常可以把这一系列分布式的操作序列称为子事务,但由于在分布式事务中,各个子事务的执行是分布式的,因此要实现一种能够保证 ACID 特性的分布式事务处理系统就显得格外复杂。

数据库分库分表

当数据库单表一年产生的数据超过1000W,那么就要考虑分库分表,具体分库分表的原理在此不做解释,以后有空详细说,简单的说就是原来的一个数据库变成了多个数据库。这时候,如果一个操作既访问01库,又访问02库,而且要保证数据的一致性,那么就要用到分布式事务。

一致性理论

关于分布式一致性问题

所谓分布式一致性的问题,就是指在分布式环境中引入数据复制机制后,不同数据节点之间可能会出现的、且无法依靠计算机应用程序自身解决的数据不一致的情况。简单来说, 数据一致性就是指在对一个副本数据进行变更的时候,必须确保也能够更新其它的副本,否则不同副本之间的数据将出现不一致。 那么如何去解决这个问题呢?按照正常的思路,我们可能会想到既然是网络延迟导致的问题,那么我们就把同步动作进行阻塞,用户 2 在查询的时候必须要等数据同步完成以后再来做。但这个方案会非常影响性能。如果同步的数据比较多或比较频繁,那么阻塞操作可能会导致整个新系统不可用。故我们没有办法找到一种既能够满足数据一致性、 又不影响系统性能的方案,所以就诞生了一个一致性的级别:

  • 强一致性 : 这种一致性级别是最符合用户直觉的,它要求系统写入的是什么,读出来的也要是什么,用户体验好,但实现起来往往对系统的性能影响较大。
  • 弱一致性 : 这种一致性级别约束了系统在写入成功后, 不保证立即可以读到写入的值,也不保证多久之后数据 能够达到一致,但会尽可能地保证到某个时间级别(如秒级别)后,数据能够达到一致状态。
  • 最终一致性 : 最终一致性其实是弱一致性的一个特例,系统会保证在一定时间内,能够达到数据一致的状态。这里之所以将最终一致性单独提出来,是因为它是弱一致性中非常推崇的一种一致性模型,也是业界在大型分布式系统的数据一致性上用的比较多的一致性模型

强一致性ACID

单机环境下我们对传统关系型数据库有苛刻的要求,由于存在网络的延迟和消息丢失,ACID便是保证事务的原则,这四大原则甚至我们都不需要解释出来就耳熟能详了:

  • Atomicity:原子性,一个事务中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。
  • Consistency:一致性,在事务开始之前和事务结束以后,数据库的完整性没有被破坏。
  • Isolation:隔离性,数据库允许多个并发事务同时对其数据进行读写和修改的能力,隔离性可以防止多个事务并发执行时由于交叉执行而导致数据的不一致。
  • Durabilit:事务处理结束后,对数据的修改就是永久的,即便系统故障也不会丢失。

CAP和BASE理论

为了解决分布式事务问题,这就提出了两个著名理论:CAP 理论 和 BASE 理论。

  • CAP 理论 认为一个分布式系统不可能同时满足 CAP (Consistency一致性、Availability可用性、Partition tolerance分区容错性)也就是一致性、可用性和分区容错性这三个基本需求,最多只能同时满足其中两项。CAP 并不是一个普适性原理和指导思想,它仅适用于原子读写的 NoSql 场景中,并不适用于数据库系统。
  • BASE 理论 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)三个单词的简写,是对 CAP 中一致性和可用性权衡的结果,其来源于对大规模互联网分布式实践的总结,是基于 CAP 定理逐步演化而来的其核心思想是即使无法做到强一致性(Strong consistency),但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性(Eventual consistency)。

多数情况下,其实我们也并非一定要求强一致性,部分业务可以容忍一定程度的延迟一致,所以为了兼顾效率,发展出来了最终一致性理论BASE

一致性协议之 2PC、3PC

当一个事务操作需要跨越多个分布式节点的时候(分布式事务),为了保持事务处理的 ACID 特性,就需要引入一个称为 “协作者” 的组件来同一调度所有分布式节点的执行逻辑,这些被调度的分布式节点则被称为 “参与者”。协调者负责调度参与者的行为,并最终决定这些参与者是否要把事务真正进行提交。基于这个思想,衍生出了二阶段提交和三阶段提交两种协议。

2PC

3PC

一致性算法

Paxos算法

Raft算法

分布式数据一致性工业级解决方案 — Zookeeper

参考文献

https://zhuanlan.zhihu.com/p/57928060

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 技术黑板 设计师:CSDN官方博客 返回首页