深入浅出分布式技术原理
陈现麟
伴鱼技术中台负责人,前小米工程师
21241 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 39 讲
深入浅出分布式技术原理
15
15
1.0x
00:00/00:00
登录|注册

25|事务(四):持久性,吃一碗粉就付一碗粉的钱

共识算法(Raft/Paxos)
同步主从复制
RAID 5
RAID 1
数据复制
磁盘阵列
RedoLog 或 Write Ahead Log
顺序写入日志文件
随机写入加剧写放大
写放大问题
无法覆盖写
顺序读写优于随机读写
寻道和寻址时间消耗
硬盘写入性能问题
系统崩溃导致数据丢失
存储引擎设计与存储设备特性和业务数据特点的关系
持久性(D)
隔离性(I)
原子性(A)
一致性(C)
通过数据冗余
通过非易失性存储
SSD硬盘
SATA硬盘
事务提交后结果永久存在
思考题
事务的四个特性
保障持久性的方法
持久性的挑战
定义
事务的持久性

该思维导图由 AI 生成,仅供参考

你好,我是陈现麟。
通过上节课的学习,我们掌握了通过 MVCC 和 2PL 实现分布式事务隔离性的技术原理,并且也明白了隔离级别是事务在正确性和性能之间的一个权衡,以后在极客时间的业务研发中,我们就可以根据业务特点,对事情的隔离级别做出正确的选择了。
虽然事务在有了一致性、原子性和隔离性的保障后,已经可以很好地保障业务在各种使用场景下的正确性了,但是如果机器突然断电或者崩溃,导致已经提交成功的事务数据丢失了,最终也就功亏一篑了。
所以在这节课中,我们将一起来讨论如何确保机器在突然断电、崩溃等异常情况下,不会将已经成功的事务数据丢失掉的问题,即事务的持久性。
我们首先会通过持久性的定义分析出它面临的挑战,然后再一起讨论一下如何通过非易失性存储来保障事务的持久性,最后一起讨论在分布式系统中,如何通过数据复制来进一步提高事务的持久性。

持久性的挑战

持久性在事务中的定义是,如果一个事务已经提交,不论什么原因,它产生的结果都是永久存在的,这保证了事务的结果不会丢失。通过持久性的定义,我们会发现要保证事务的持久性,一个显而易见的思路就是,将事务的结果立即写入到非易失性存储设备中,比如 SSD 硬盘和 SATA 硬盘等,并且写入的副本数越多,持久性就越高。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入探讨了分布式事务中持久性的重要性和挑战,以及解决方案。首先介绍了持久性的定义和挑战,指出了立即写入非易失性存储设备的理想与现实之间的矛盾。随后详细分析了通过非易失性存储来保障事务的持久性,重点讨论了顺序写入日志的方式,如重做日志和预写日志。文章还探讨了通过磁盘阵列和网络复制数据来解决持久性问题的思路,并提出了共识算法如Raft和Paxos的应用。总结指出,持久性保证了事务结果不会因数据丢失而出现异常,强调了持久性在分布式系统中的重要性。整体而言,本文深入浅出地阐述了持久性在分布式事务中的挑战和解决方案,对技术人员具有实际指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《深入浅出分布式技术原理》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(1)

  • 最新
  • 精选
  • wenxuan
    思考题的一些想法,可以把多个小文件合并成大文件(比如 8 M)存储,记录下每个原始文件的起始位置和偏移量,通过 `seek` 快速定位到起始位置进行读取。删除导致的文件空洞可以通过定期合并来解决。

    作者回复: 👍非常赞的想法,Facebook 的图片存储 haystack 就是这样做的。

    2022-03-31
    13
收起评论
显示
设置
留言
1
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部