分布式事务 Dear 丶 2022-03-10 15:27 286阅读 0赞 # 什么是分布式事务 # 分布式事务涉及到操作多个数据库的事务,分布式事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的`不同节点上`。一个分布式事务可以看作是由多个分布式的操作序列组成的,通常可以把这一系列分布式的操作序列称为子事务,但由于在分布式事务中,各个子事务的执行是分布式的,因此要实现一种能够保证 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][https_zhuanlan.zhihu.com_p_57928060] [https_zhuanlan.zhihu.com_p_57928060]: https://zhuanlan.zhihu.com/p/57928060
相关 【分布式事务】分布式事务Seata 文章目录 前言 什么是分布式事务? (1)数据库分库分表就产生了分布式事务; (2)项目拆分服务化也产生了分布式事务; 一、W 客官°小女子只卖身不卖艺/ 2023年10月09日 13:49/ 0 赞/ 72 阅读
相关 分布式事务(二)分布式事务方案 文章目录 什么是分布式事务 理论部分 CAP BASE 分布式事务方案 什么是分布式事务 首先这是普通事务: ![ 太过爱你忘了你带给我的痛/ 2023年02月28日 01:29/ 0 赞/ 10 阅读
相关 分布式-分布式事务 分布式事务 文章目录 分布式事务 一,本地消息表 二,2PC 两阶段提交 三,3PC 三段式提交 四,T 待我称王封你为后i/ 2022年11月27日 15:40/ 0 赞/ 334 阅读
相关 分布式事务01-分布式事务概述 文章目录 1.分布式事务产生的背景 1.1 分布式事务在不同场景下如何产生 1.2 案例 2.事务理论知识 2.1 AC 旧城等待,/ 2022年04月25日 09:54/ 0 赞/ 396 阅读
相关 分布式事务 一、前言 在单个数据库实例时候,我们可以使用一个数据源的事务([本地事务][Link 1] )来保证事务内的多个操作要么全部执行生效,要么全部不生效。在多数据库实例节点时 冷不防/ 2022年04月14日 02:09/ 0 赞/ 411 阅读
相关 分布式事务 什么是分布式事务 分布式事务涉及到操作多个数据库的事务,分布式事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于分布式系统的`不同节点上`。一个分布式事务可 Dear 丶/ 2022年03月10日 15:27/ 0 赞/ 287 阅读
相关 分布式事务 1、分布式事务产生的背景 在微服务环境下,因为会根据不同的业务会拆分成不同的服务,比如会员服务、订单服务、商品服务等,让专业的人做专业的事情,每个服务都有自己独立的数据库,并 - 日理万妓/ 2021年10月25日 14:09/ 0 赞/ 492 阅读
相关 分布式事务 阅读: 深入理解分布式事务,高并发下分布式事务的解决方案 [https://blog.csdn.net/qq\_32534441/article/details/890 红太狼/ 2021年10月13日 01:13/ 0 赞/ 518 阅读
相关 分布式事务 在分布式系统中,为了保证数据的高可用,通常,我们会将数据保留多个副本(replica),这些副本会放置在不同的物理的机器上。为了对用户提供正确的 CRUD 等语义,我们需... 灰太狼/ 2020年04月24日 17:42/ 0 赞/ 990 阅读
还没有评论,来说两句吧...