写点什么

分布式事务及其一致性协议

  • 2022 年 5 月 13 日
  • 本文字数:1617 字

    阅读完需:约 5 分钟

事务具有四个特性:


1.一致性(Consistency):事务的操作需要从一个一致性状态到另一个一致性状态。如果一次事务中,有些操作更新成功,有些操作更新失败,这就是不一致的。


2.原子性(Automicity):指事务是一个原子操作序列单元。一个事务下的操作要么全部执行成功,要么全部执行不成功。


3.持久性(Durability):指事务一旦提交,对数据库中的数据的变更操作就是永久的。


4.隔离性(Isolation):指不同的事务操作互不影响。


事务的隔离级别:


<table width="825"><tbody><tr class="firstRow"><td style="border-color:rgb(230,230,230);">隔离级别</td><td style="border-color:rgb(230,230,230);">特点</td></tr><tr><td style="border-color:rgb(230,230,230);">读未提交(read uncommitted)</td><td style="border-color:rgb(230,230,230);">另一事务可以看见一个事务提交前的所有状态。</td></tr><tr><td style="border-color:rgb(230,230,230);">读已提交(read committed)</td><td style="border-color:rgb(230,230,230);">只允许读取到事务提交之后的状态。</td></tr><tr><td style="border-color:rgb(230,230,230);">可重复读(repeatable read)</td><td style="border-color:rgb(230,230,230);">只允许读取到事务开始时刻的状态。</td></tr><tr><td style="border-color:rgb(230,230,230);">序列化(serializable)</td><td style="border-color:rgb(230,230,230);">事务串行执行。</td></tr></tbody></table>


关于读已提交和可重复读的区别:


(1)读已提交(又叫不可重复读)隔离级别下,如果事务 A 的一个操作读取了一条记录,然后事务 B 修改了这条记录,接着事务 A 的另一个操作再读取这条记录的时候就发现被修改了。所以对于读已提交来说,需要注意的是另一个事务的更新或是删除操作。


(2)可重复读隔离级别下,如果事务 A 的一个操作读取了一张表的记录,事务 B 不能对这张表的数据进行删除或是更新,这样就保障了可重复读,但是事务 B 是可以对这张表进行插入操作的,事务 B 向这张表插入一条记录后,事务 A 的另一个操作再读取这张表的数据,就发现多了一条记录,这就是幻读的产生。所以对于可重复读来说,需要注意的是另一个事务的新增操作。


三:什么是分布式系统。


首先了解下从集中式到分布式的发展历程


20 世纪 60 年代,人类发明了大型主机。大型主机具有超强的计算能力和 I/O 处理能力,在稳定性和安全性上也有良好的表现,因此集中式的计算机架构也就流行了起来。集中式系统是将一台或是几台计算机作为中心节点,所有的操作运算和数据的存储都是中心节点完成。一方面是大型主机价格昂贵,技术要求比较高,对主机进行扩容困难,一台主机不可用将造成整个系统不可用,另一方面是小型机和 PC 的发展,集中式架构逐步退出历史舞台,分布式架构走进人们的视野。


分布式系统指的是将一个硬件或是软件组件分布在不同的网络计算机上,彼此之间通过消息传递进行通信和协调的系统。


四:分布式系统的经典理论。


1.CAP 理论


CAP 指的是 Consistency(一致性)、Availability(可用性)和 Pa 《一线大厂 Java 面试题解析+后端开发学习笔记+最新架构讲解视频+实战项目源码讲义》无偿开源 威信搜索公众号【编程进阶路】 rtition tolerance(分区容错性)。


(1)一致性:指数据在多个副本之间能够保持一致的特性。


有以下三种一致性级别:


a.强一致性:要求对系统数据的修改可以立刻读取,用户体验性最好。


b.弱一致性:不保证什么时候能达到一致性,但是尽可能保证在某个时间级别后,数据达到一致性。


c.最终一致性:弱一致性的一个特例,系统会保证在一定时间内,能够达到一个数据一致的状态。


(2)可用性:指系统提供的服务需要一直处于可用状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果。


(3)分区容错性:分布式系统在遇到任何网络分区故障时,都需要能够保证一致性和可用性,除非整个网络都发生了故障。


2.BASE 理论


BASE 理论指的是 Basically Avaliable(基本可用)、Soft state(软状态)和 Eventually consistent(最终一致性)。

用户头像

还未添加个人签名 2022.04.13 加入

还未添加个人简介

评论

发布
暂无评论
分布式事务及其一致性协议_Java_爱好编程进阶_InfoQ写作社区