分布式事务-理论基础


个人名片:

博主:酒徒ᝰ.
个人简介:沉醉在酒中,借着一股酒劲,去拼搏一个未来。
本篇励志:三人行,必有我师焉。

本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》,SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式

【SpringCloud+RabbitMQ+Docker+Redis+搜索+分布式,系统详解springcloud微服务技术栈课程|黑马程序员Java微服务】 点击观看

目录

  • 二、理论基础
    • [1. CAP定理](#1. CAP定理)
    • [2. BASE理论](#2. BASE理论)
    • [3. 解决分布式事务的思路](#3. 解决分布式事务的思路)

二、理论基础

解决分布式事务问题,需要一些分布式系统的基础知识作为理论指导。

  • CAP理论
  • BASE理论

1. CAP定理

1998年,加州大学的计算机科学家 Eric Brewer 提出,分布式系统有三个指标。

  • Consistency(一致性)
  • Availability(可用性)
  • Partition tolerance (分区容错性)

它们的第一个字母分别是 C、A、P。

Eric Brewer 说,这三个指标不可能同时做到。这个结论就叫做 CAP 定理。

  1. 一致性

Consistency(一致性):用户访问分布式系统中的任意节点,得到的数据必须一致。

  1. 可用性

Availability (可用性):用户访问集群中的任意健康节点,必须能得到响应,而不是超时或拒绝。

  1. 分区容错

Partition(分区) :因为网络故障或其它原因导致分布式系统中的部分节点与其它节点失去连接,形成独立分区。
Tolerance(容错):在集群出现分区时,整个系统也要持续对外提供服务

  1. 矛盾

在分布式系统中,系统间的网络不能100%保证健康,一定会有故障的时候,而服务有必须对外保证服务。因此Partition Tolerance(分区 容错)不可避免。
当已经分区的节点接收到新的数据变更时,就会出现问题了:

  • 如果此时要保证一致性,就必须等待网络恢复,完成数据同步后,整个集群才对外提供服务,服务处于阻塞状态,不可用。
  • 如果此时要保证可用性,就不能等待网络恢复,那node01、node02与node03之间就会出现数据不一致。
    也就是说,在P一定会出现的情况下,A和C之间只能实现一个。

总结:

1.简述CAP定理内容?

  • 分布式系统节点通过网络连接,一定会出现分区
  • 当分区出现时,系统的一致性和可用性就无法同时满足

2.elasticsearch集群 是C(一致性)P还是A(可用性)P?

答:CP

ES集群出现分区时,故障节点会被剔除集群,数据分片会重新分配到其它节点,保证数据一致。因此是低可用性,高一致性,属于CP

2. BASE理论

BASE理论是对CAP的一种解决思路,包含三个思想:

  • Basically Available (基本可用):分布式系统在出现故障时,允许损失部分可用性,即保证核心可用。
  • **Soft State(软状态):**在一定时间内,允许出现中间状态,比如临时的不一致状态。
  • Eventually Consistent(最终一致性):虽然无法保证强一致性,但是在软状态结束后,最终达到数据一致。

3. 解决分布式事务的思路

分布式事务最大的问题是各个子事务的一致性问题,因此可以借鉴CAP定理和BASE理论,有两种解决思路:

  • AP模式:各子事务分别执行和提交,允许出现结果不一致,然后采用弥补措施恢复数据即可,实现最终一致。

  • CP模式:各个子事务执行后互相等待,同时提交,同时回滚,达成强一致。但事务等待过程中,处于弱可用状态。

但不管是哪一种模式,都需要在子系统事务之间互相通讯,协调事务状态,也就是需要一个事务协调者(TC):
这里的子系统事务,称为分支事务 ;有关联的各个分支事务在一起称为全局事务。

总结:

简述BASE理论三个思想:

  • 基本可用
  • 软状态
  • 最终一致
相关推荐
wifi___12 分钟前
Redis分布式锁
数据库·redis·分布式
方方洛3 小时前
ray教程-15-RayServe与LLM服务
人工智能·分布式·机器学习
m0_639906944 小时前
MySQL 实现分布式锁:悲观锁、乐观锁、唯一索引锁
数据库·分布式·mysql
T量子永生5 小时前
Android SISO 分布式编译集群配置方案
android·分布式·云计算·源代码管理
KaiwuDB19 小时前
KaiwuDB 分布式集群扩缩容,从原理到完整操作踩坑总结
运维·数据库·分布式
泡海椒20 小时前
深度解析JQuick-SQL AST到逻辑计划转换机制|分布式SQL原理
数据库·分布式·sql
小羊没烦恼!1 天前
分布式事务 | 使用DTM 的Saga 模式
java·linux·运维·数据库·wpf
泡海椒1 天前
深度解析JQuick-SQL SQL解析与AST生成机制|分布式SQL原理
数据库·分布式·sql
2603_954708311 天前
微能网协调控制箱的架构优势对能源管理的影响?
大数据·人工智能·分布式·安全·架构
方方洛1 天前
ray教程-14-RayTune与超参搜索
人工智能·分布式·机器学习