分布式事务的BASE理论
1.什么是事务
在关系数据库中,一个事务可以是一条SQL语句,一组SQL语句或整个程序
事务是恢复和并发控制的基本单位。
事务应该具有4个属性:原子性、一致性、隔离性、持久性。这四个属性通常称为ACID特性。
- 原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。
- 一致性(consistency)。事务必须是使数据库从一个一致性状态变到另一个一致性状态。一致性与原子性是密切相关的。
- 隔离性(isolation)。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。
- 持久性(durability)。持久性也称永久性(permanence),指一个事务一旦提交,它对数据库中数据的改变就应该是永久性的。接下来的其他操作或故障不应该对其有任何影响。
2.什么分布式事务
顾名思义是在分布式系统中实现的事务,事务的资源管理器,事务管理器,资源协调器可能不在同一个服务器上,分布于各个服务器,一个大的操作由很多小的操作组成,例如,购物由扣减库存,支付金币,增加积分三个操作组成,分布式事务要保证这三个要么都成功,要么都失败。
3.分布式事务的类型
- 强一致性:是指在事务没有完成前,所有其他的访问事务中的资源都处于阻塞状态,一直到事务完成后。后续的操作只会读取带更新后的资源
- 弱一致性:在两个操作进行时,一个操作要读取另一个操作的资源,可能会读取到更新前的资源也可能读取到更新后的资源。
- 最终一致性:在这种情况下,事务不会进入阻塞状态,在另一个请求读取这种事务的时候,只会读取到更新后的资源,因为这种会执行预执行,一旦出错,会进行逆操作回到执行前的状态,但最终一定是一致的。
4.BASE 理论
BASE 理论是对 CAP 中的一致性和可用性进行一个权衡的结果,理论的核心思想就是:我们无法做到强一致,但每个应用都可以根据自身的业务特点,采用适当的方式来使系统达到最终一致性。
- 基本可用(Basically Available): 基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现。
- 软状态(Soft State): 软状态是指允许系统存在中间状态,而该中间状态不会影响系统整体可用性。分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。MySQL Replication 的异步复制也是一种体现。
- 最终一致性(Eventual Consistency): 最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况。
5.BASE和ACID
ACID 理论是传统数据库常用的设计理念,追求强一致性模型。BASE 理论支持的是大型分布式系统,通过牺牲强一致性获得高可用性。BASE 理论在很大程度上,解决了事务型系统在性能、容错、可用性等方面痛点。BASE 理论在 NoSQL 中应用广泛,是 NoSQL 系统设计的事实上的理论支撑。
对于任何集群而言,不可预知的故障的最终后果,都是系统过载。如何设计过载保护,实现系统在过载时的基本可用,是开发和运营互联网后台的分布式系统的重中之重。
分布式事务的BASE理论相关推荐
- 分布式事务之BASE理论
分布式事务之BASE理论 1. 什么是BASE理论? 2. Basically Available(基本可用) 3. Soft state(软状态) 4. Eventually consistent( ...
- 分布式事务概念、理论、及(2PC、3PC)
一. 简介 1. 什么是本地事务? 基于关系型数据库的事务,叫做本地事务,也叫做数据库事务. 本地事务通常是应用和数据库在一个服务器上,利用数据库本身的事务特性,从而实现本地事务. 数据库事务的特性: ...
- cap理论具体含义_分布式事务的CAP理论
相关历史文章(阅读本文之前,您可能需要先看下之前的系列 ) 分布式事务「2020年」必学,升职加薪你准备好了吗? 事务的基本概念 事务的四大特性ACID 分布式事务产生的场景 前言 通过前面的学习,我 ...
- 10分钟了解分布式CAP、BASE理论
CAP理论 2000年7月,Eric Brewer教授提出CAP猜想:2年后,Seth Gilbert和Nancy Lynch从理论上证明了CAP:之后,CAP理论正式成为分布式计算领域的公认定理.C ...
- 分布式事务解决方案(总览)
关注私信,赠送 分布式事务学习视频资料!!! 总览 本系列针对分布式事务提出三种解决方案:可靠消息最终一致性.最大努力通知.TCC. 每种方案分为上下两篇,上篇为原理概述,下篇为具体实现. 本篇是对本 ...
- 分布式事务Seata
02.引入分布式事务-本地事务与分布式事务 1)本地事务 本地事务,也就是传统的单机事务.在传统数据库事务中,必须要满足四个原则: 目前常用的Spring的声明式事务,@Transtional 2)分 ...
- 分布式事务详解、理论分析、及强一致性(2PC、3PC)剖析
一. 简介 1. 什么是本地事务? 基于关系型数据库的事务,叫做本地事务,也叫做数据库事务. 本地事务通常是应用和数据库在一个服务器上,利用数据库本身的事务特性,从而实现本地事务. 数据库事务的特性: ...
- 分布式事务篇——第一章:分布式事务前言
做开发的同学,在一般的互联网公司会很少接触到分布式,甚至本地事务都不一定经常用,全是靠DB来做支持,或者通过Mybatis,一旦接触到分布式,就一定离不开核心点--分布式事务,本章就来唠唠看大厂这些分 ...
- 基于可靠消息方案的分布式事务:Lottor介绍
前言:笔者最近实现了基于可靠消息方案的分布式事务:Lottor.本文将会介绍Lottor的概况,在后续系列文章介绍具体的实现,欢迎关注. 分布式事务 分布式事务是指事务的参与者.支持事务的服务器.资源 ...
最新文章
- Spring事务传播
- Codeforces 1344 题解
- 魏桥集团创始人张士平去世,他是如何成为山东首富的?
- Spring Cloud Zuul网关(快速搭建)
- 跟着翁凯老师学Cday1#学习记录#
- 以云服务器产品为例,深度分析比对华为云、阿里云、腾讯云
- JAVA WEB 复习资料
- 指针的指针(简单易懂)
- 使用java.lang.String报错之Expected 0 arguments but found 1
- 大侠周鸿祎——腾讯,你丫动手吧!
- 《Blockchained On-Device Federated Learning》精读
- 不要看《深入浅出MFC》!
- 仿百度外卖、美团外卖、淘点点等左右联动ListView菜单展示
- 写博客的时间被看小说、刷微信的时候,要想想
- Android系统的应用开发与运行环境构建
- 再严重的 Log4j2 漏洞也伤害不了 Java
- matlab读写xlsx文件和txt文件
- 通过 GCC 学习 OpenMP 框架
- l4re Getting started
- 201671010426 孙锦喆 实验三作业互评与改进报告
热门文章
- 软考网络工程师备考详细介绍
- 利用python进行数据分析数据集_《利用Python进行数据分析》终章·数据分析案例·学习笔记(二)...
- Linux多定时器实现之三——Windows和Linux通用版
- MySQL如果不存在一个表则创建
- Nexus arm Linux,[原创] Nexus 6p 刷入Kali Linux NetHunter 2019.3方法
- 运行错误:view size is not compatible with input tensor‘s size and stride (at least
- 软考高级,考网规还是考项管?
- 光场相机重聚焦原理介绍及代码解析
- 4 支付宝手机网站支付demo讲解
- Linux——赋予普通用户root的权限