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

文章目录

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理论的核心思想是在分布式系统中,可以适当放宽强一致性的要求,追求更高的可用性和性能,通过一定的机制,最终实现一致性。

相关推荐
灯澜忆梦6 小时前
【RabbitMQ #10】 | MQ可靠性
分布式·rabbitmq
逐流人10 小时前
Ceph分布式存储集群配置与池管理:从配置优先级到PG、复本池与纠删码池
运维·分布式·ceph·云原生·云计算·rados
天天喝旺仔12 小时前
gRPC 底层原理:HTTP/2 多路复用、Protobuf 序列化与四种流模式
分布式·http·微服务·rpc
灯澜忆梦16 小时前
【RabbitMQ #5】 | 三大交换机 Fanout ,Direct ,Topic
分布式·rabbitmq·ruby
.冰块.18 小时前
Ceph 分布式存储实战(二):存储池管理与 cephx 认证授权
分布式·ceph·rados·纠删码·复本池·cephx认证与用户权限
我们从未走散20 小时前
从内存字典到租约内核:分布式上游账号池如何做到不超卖
分布式
.冰块.21 小时前
Ceph 分布式存储实战(一):架构入门与 cephadm 集群部署
分布式·ceph·架构·cephadm
j7~1 天前
【Redis】《一文走完服务端高并发架构演进:从单机架构到 K8S 容器编排》
分布式·架构演进·服务端高并发分布式结构演进之路·架构基本概念·架构评价指标
Flynt1 天前
把 bug tracker 塞进 git 仓库,同步和冲突怎么解决?我把 git-bug 拆开实测了一遍
分布式·git·开源