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

文章目录

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

相关推荐
ly76892 天前
Redis 分布式锁的边界条件:Redlock 争议、锁续期与客户端崩溃后的互斥失效
数据库·redis·分布式·分布式锁·watchdog·redlock
灯澜忆梦2 天前
【minio】#5 | MinIO 分布式部署 + HTTPS 部署
分布式·网络协议·https·对象存储·minio
谢亮_vipxieliang2 天前
Spring Cloud 服务治理入门:注册发现、配置中心、网关限流、熔断降级与分布式一致性方案
分布式·spring·spring cloud
樱花落木兰3 天前
分布式登录实战:Session 会话共享改造,Redis 存储用户登录状态
java·javascript·数据库·redis·分布式·缓存
ShineWinsu3 天前
对于Redis:Steam、Geospatial、Hyperloglog、Bitmap、Bitfield类型的解析
数据库·c++·redis·分布式·缓存·面试·zset
Flynt3 天前
Redis Cluster主节点挂了,为什么"高可用"还全员掉线?我把三次kill的记录翻出来了
数据库·redis·分布式
JosieBook3 天前
【数据库】MySQL 实战精通系列 · 第10篇:分库分表与分布式事务实战
数据库·分布式·mysql
梦帮科技4 天前
vLLM / TensorRT-LLM 极限推理:PagedAttention 细粒度物理页表管理与连续批处理(Continuous Batching)实战
数据结构·人工智能·分布式·python·深度学习·算法·vllm
Frank_refuel4 天前
分布式RPC框架实战(二):服务端模块划分与底层设计
分布式·网络协议·rpc