【布式事务】分布式事务和分布式指导理论简介

文章目录

1.分布式事务概念

基础概念:事务的4大要求 ACID

  1. 原子性(Atomicity):确保事务作为一个完整的单元执行。如果事务中的任何操作失败,整个事务都会回滚,就像它从未发生过一样。
  2. 一致性(Consistency):保证事务将数据库从一个有效状态转移到另一个有效状态。这意味着事务完成后,数据库的完整性规则必须得到满足。
  3. 隔离性(Isolation):防止并发执行的事务相互干扰。每个事务都独立于其他事务运行,提供了不同级别的隔离,如读已提交和可重复读等。
  4. 持久性(Durability):一旦事务被提交,它对数据库所做的更改就永久保存下来,即使系统发生故障,这些更改也不会丢失。

事务

  • 本地事务:本地事务,也称为数据库事务或传统事务,是相对于分布式事务而言的,它是指在单个数据库中进行的一系列操作,借助数据库来满足事务的 4 大要求(ACID)。在早期的单体应用中,因为应用和数据库通常位于同一个服务器中,所以基于关系型数据库的事务被称为本地事务。
  • 分布式事务:分布式事务的概念来源于对传统本地事务概念在分布式系统环境中的延伸和拓展。具体来说,分布式事务是指在分布式系统中,由分布在不同节点上的多个服务共同参与的事务。这些服务可能属于不同的应用,它们通过网络进行远程协作来完成一系列操作,这些操作需要保持一致性和原子性。例如,用户注册送积分、创建订单减库存、银行转账等操作都可能涉及到分布式事务。

2.分布式系统设计的指导理论

分布式系统设计的指导理论主要是CAP定理和BASE理论。

分布式系统是由多个子业务组成的,这些子业务分布在不同的服务器节点上,共同工作以完成系统的业务目标。分布式系统具有分布性、对等性、并发性等特点,同时也面临着缺乏全局时钟、故障总数增加等问题。在这样的背景下,为了确保分布式系统的高可用性和可扩展性,设计师们提出了 CAP 定理和 BASE 理论。

CAP 定理

CAP定理指出,在分布式系统中,在满足必要的 分区容错性 前提下,最多只能再满足一致性、可用性中的一项

CAP定理是分布式系统设计中的基本理论,由Eric Brewer在2000年提出,并由Seth Gilbert和Nancy Lynch在2002年证明。该定理的核心观点是在一个分布式系统中,不可能同时满足以下三个特性:

  • 一致性(Consistency):这意味着系统的所有节点在同一时间看到的数据是一致的。一旦数据被更新,所有的用户都应该能看到这个最新的数据状态。
  • 可用性(Availability):这指的是系统提供的服务必须始终可用,即使在系统的部分组件出现故障的情况下,系统仍能对外提供服务。
  • 分区容错性(Partition tolerance):分区容错性指的是系统能够处理网络分区的问题,即使在系统的部分节点无法与其他节点通信的情况下,系统仍然能够继续运行。

BASE 理论

BASE理论是一种分布式系统设计理念,强调基本可用性、软状态和最终一致性

BASE理论由eBay的架构师Dan Pritchett在2008年提出,并在ACM上发表。它是对CAP定理中一致性(C)和可用性(A)权衡的结果,本质上是对CAP中AP方案的一个补充。BASE代表的是:

  • 基本可用(Basically Available):这是一种折中的概念,介于完全可用和完全不可用之间。在互联网系统中,基本可用意味着系统大部分时间是可用的,但可能会在某些情况下短暂不可用。
  • 软状态(Soft state):指的是系统中的状态不需要实时一致,允许存在一定的延迟或误差。这意味着系统的某些部分可能会暂时处于不一致的状态,但随着时间的推移,这些状态会通过一定的机制达到一致。
  • 最终一致性(Eventually consistent):这是对一致性要求的一种放宽。在分布式系统中,不强调实时一致性,而是允许数据在一定时间内达到最终一致的状态。这样可以提高系统的可用性和性能。

总的来说,BASE理论的核心思想是在分布式系统中,可以适当放宽强一致性的要求,追求更高的可用性和性能,通过一定的机制,最终实现一致性。

相关推荐
Allen Bright19 分钟前
RabbitMQ中的普通Confirm模式:深入解析与最佳实践
分布式·rabbitmq
李昊哲小课1 小时前
deepin 安装 kafka
大数据·分布式·zookeeper·数据分析·kafka
Kobebryant-Manba1 小时前
zookeeper+kafka的windows下安装
分布式·zookeeper·kafka
_oP_i8 小时前
Pinpoint 是一个开源的分布式追踪系统
java·分布式·开源
攻心的子乐10 小时前
Kafka可视化工具 Offset Explorer (以前叫Kafka Tool)
分布式·kafka
小林想被监督学习11 小时前
RabbitMQ 的7种工作模式
分布式·rabbitmq
初晴~12 小时前
【Redis分布式锁】高并发场景下秒杀业务的实现思路(集群模式)
java·数据库·redis·分布式·后端·spring·
有一个好名字12 小时前
zookeeper分布式锁模拟12306买票
分布式·zookeeper·云原生
yukai0800816 小时前
【最后203篇系列】002 - 两个小坑(容器时间错误和kafka模块报错
分布式·kafka
老猿讲编程17 小时前
OMG DDS 规范漫谈:分布式数据交互的演进之路
分布式·dds