【分布式事务】概述

【背景】

    随着单体应用的缺陷日益明显,越多越多的公司都从传统的单体应用模式向新型的分布式应用模式转变。
    实际上,在分布式应用带来巨大优势的同时,也伴随着各种挑战。例如,系统容错、网络延迟和分布式事务等。
    本篇博客开始,将会对分布式事务做一系列学习总结。从本篇博客,我们可以了解到什么是分布式事务,关于分布式事务的相关理论以及处理分布式事务的解决方案。

【本地事务】

    在没有接触分布式应用前,我们接触到的事务一般都是本地事务,即在单个数据库并且限制在单个进程内的事务。本地事务不涉及多个数据源。
    若我们的系统使用了spring,一般加上@Transition注解即可保证事务正常运行。但如果是分布式系统应用下,若操作涉及不同的数据库,这样本地事务就失效了,从而就涉及到了分布式事务。

【分布式事务】

    1. 什么是分布式事务
        分布式事务是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。
        简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。
    2. 分布式事务的产生原因
        从原来的单体应用到分布式应用的转变,便意味着从以前的一个系统到多个服务共同组成一个系统的转变。
        如一个电商系统,拆分为订单、用户、库存等多个服务,每个服务都有着自己的数据源,在执行下单这一操作,至少需要操作订单和库存数据库,为了保证数据一致性,就需要用到分布式事务。

【经典的分布式系统理论—CAP】

    CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中两项。
    1. 一致性
        在分布式环境下,一致性是指数据在多个副本之间能否保持一致的特性。在一致性的需求下,当一个系统在数据一致的状态下执行更新操作后,应该保证系统的数据仍然处于一致的状态。
        对于一个将数据副本分布在不同分布式节点的系统来说,如果第一个节点的数据进行了更新操作并且更新成功后,却没有使得第二个节点上的数据得到相应的更新,于是在对第二个节点的数据进行读取操作时,获取的依然是老数据(或称为脏数据),这就是典型的分布式数据不一致的情况。
        在分布式系统中,如果能够做到针对一个数据项的更新操作执行成功后,所有的用户都可以读取到其最新的值,那么 这样的系统就被认为具有强一致性。
    2. 可用性
        可用性是指系统提供的服务必须一致处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。
        “有限的时间内”是指,对于用户的一个操作请求,系统必须能够在指定的时间内返回对应的处理结果,如果超过了这个时间范围,那么系统就被认为是不可用的。
        “返回结果”是可用性的另一个非常重要的指标,它要求系统在完成对用户请求的处理后,返回一个正常的响应结果。正常的响应结果通常能够明确地反映出队请求的处理结果,即成功或失败,而不是一个让用户感到困惑的返回结果。
    3. 分区容错性
        分布式系统在遇到任何网络分区故障的时候,仍然需要能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。
    既然一个分布式系统无法同时满足一致性、可用性、分区容错性三个特点,我们就需要抛弃一样:
                    这里写图片描述
    需要明确的一点是,对于一个分布式系统而言,分区容错性是一个最基本的要求。因为既然是一个分布式系统,那么分布式系统中的组件必然需要被部署到不同的节点,否则也就无所谓分布式系统了,因此必然出现子网络。
    而对于分布式系统而言,网络问题又是一个必定会出现的异常情况,因此分区容错性也就成为了一个分布式系统必然需要面对和解决的问题。
    因此系统架构师往往需要把精力花在如何根据业务特点在C(一致性)和A(可用性)之间寻求平衡。

【CAP理论的演化—BASE】

    BASE是Basically Available(基本可用)、Soft state(软状态)和Eventually consistent(最终一致性)三个短语的缩写。
    BASE理论是对CAP中一致性和可用性权衡的结果,其来源于对大规模互联网系统分布式实践的总结, 是基于CAP定理逐步演化而来的。
    BASE理论的核心思想是:即使无法做到强一致性,但每个应用都可以根据自身业务特点,采用适当的方式来使系统达到最终一致性。
    1. 基本可用
        指分布式系统在出现不可预知故障的时候,允许损失部分可用性。
    2. 软状态
        指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性,即允许系统在不同节点的数据副本之间进行数据同步的过程存在延时。
    3. 最终一致
        强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
    BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的。
    它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。
    但同时,在实际的分布式场景中,不同业务单元和组件对数据一致性的要求是不同的,因此在具体的分布式系统架构设计过程中,ACID特性和BASE理论往往又会结合在一起。

【分布式事务解决方案】

    1. 刚性事务
        - 全局事务(标准的分布式事务)
    2. 柔性事务
        - 可靠消息最终一致(异步确保型)
        - TCC(两阶段型、补偿型)
        - 最大努力通知(非可靠消息、定期校对)

【总结】

    通过本篇博客,我们知道了什么是分布式事务,分布式事务产生的原因,分布式事务的相关理论以及解决方案。后面会继续总结,详细总结分布式事务的解决方案。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
分布式数据库系统原理是一本介绍分布式数据库系统的基本原理和相关技术的电子书。分布式数据库系统是指将数据库分成多个节点分布在不同的计算机或服务器上,通过网络连接进行协同工作的数据库系统。 这本电子书主要包括以下内容: 1. 分布式数据库系统的概述介绍分布式数据库系统的背景和定义,引出了为什么需要使用分布式数据库系统以及其优势和挑战。 2. 分布式数据库系统的架构:详细介绍分布式数据库系统的总体架构和各个组件的功能和关系,包括数据库管理器、查询处理器、分布式事务管理器等。 3. 数据分布和复制策略:讲解了如何将数据分布在各个节点上,介绍了常见的数据分布策略和复制策略,如垂直划分、水平划分、副本选择等。 4. 查询优化和处理:介绍分布式查询的优化方法,如查询重写、查询重定向等,以及分布式查询处理的算法和技术,如并行查询和数据局部性优化等。 5. 分布式事务管理:详细讲解了分布式事务的概念和特性,介绍分布式事务的处理方法,如两阶段提交和三阶段提交等。 6. 容错和恢复:介绍分布式数据库系统的容错和恢复机制,包括节点故障处理、数据备份和恢复等。 7. 性能评估和优化:讲解了如何评估和优化分布式数据库系统的性能,介绍了性能评估的指标和方法,以及常见的性能优化技术,如索引优化、查询重写等。 通过学习这本电子书,读者可以深入了解分布式数据库系统的原理和技术,掌握分布式数据库系统的设计和管理方法,从而能够更好地应用和开发分布式数据库系统,提高系统的性能和可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值