全栈工程师修炼指南
熊燚(四火)
Oracle 首席软件工程师
32206 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 46 讲
全栈回顾 (1讲)
加餐 (1讲)
全栈工程师修炼指南
15
15
1.0x
00:00/00:00
登录|注册

23 | 知其然,知其所以然:数据的持久化和一致性

最终一致性
弱一致性
强一致性
客户端
网络、硬盘文件、数据库、缓存
虚拟节点
一致性哈希原理
Paxos
2PC或3PC
写的可扩展性
多个只读的Slave节点
可读可写的Master节点
事务处理问题
一致性问题
多个主节点
单点故障问题
备份方式
一致性模型
视角
客户端对数据的读写行为
存储系统形式
内存中数据转换写入存储系统
Google I/O 2009分享
Paxos
2PC和3PC
选修课堂:一致性哈希
学习成果检验
学习内容
其它
Master-Slave
Multi-Master
简单备份
一致性
数据持久化
扩展阅读
总结思考
数据高可用的架构技术
概念和背景
知其然,知其所以然:数据的持久化和一致性

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

你好,我是四火。
我想你很可能已经使用过许多存储层的技术了,例如缓存、文件、关系数据库,甚至一些云上 key-value 的存储服务,但就如同我之前提到的那样,某项具体技术总是相对好学,可对于全栈知识系统地学习,也包括持久层的学习,是一定要立足于技术的基础、原理和本质的。今天,我们要讲的就是其中之一 —— 一致性(Consistency)。
数据的可用性和一致性是很多工程师几乎每天都会挂在嘴边的概念,在存储系统的技术选型上面,一致性将会是我们一个重要的衡量因素,而在持久层架构设计上面,它也将是最重要的思考维度。
数据的一致性不但是数据持久化的一个核心内容,也是学习的一个难点,希望我们一起努力,从原理上去彻底理解它,并学习一些常见的应用模式,做到“知其然,知其所以然”,我们一起把这个难啃的骨头给啃下来。

概念和背景

数据持久化,本质上就是把内存中的数据给转换并写入指定的存储系统中,这个过程是保证数据不丢失的基本方式,而这个存储系统可以具备很多种形式,可以是网络、硬盘文件,也可以是数据库,还可以是前面两讲提到的某种形式的缓存。
你也许听说过对于一致性的不同解释,而我们在谈论数据持久化的时候讲到的一致性,我认为简单来说,指的就是在存储系统中,客户端对数据的读写行为都是可以预期、符合一定规则的。这里有两个值得注意的方面:
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文深入介绍了数据持久化和一致性的重要概念,以及相关的架构技术。首先,强调了数据持久化的本质,即将内存中的数据写入指定的存储系统,以保证数据不丢失。在讨论一致性时,介绍了三种一致性模型:强一致性、弱一致性和最终一致性,并强调了数据备份的重要性,以确保数据的高可用性。此外,还介绍了几种数据高可用的架构技术,包括Multi-Master和Master-Slave架构。文章还介绍了一致性哈希算法,以及其在数据分布和节点扩展方面的应用。同时,提到了一些扩展阅读的内容,如2PC、3PC和Paxos算法,为读者提供了进一步学习的方向。整体而言,本文对于全栈工程师的技术学习具有一定的指导意义。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《全栈工程师修炼指南》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(7)

  • 最新
  • 精选
  • pyhhou
    关系数据库 是强一致性,因为需要每次 query 出来的都是最新的数据 本地文件 是强一致性,解释和关系型数据库类似 浏览器缓存 是弱一致性,因为不能保证每次获取的都是最新的数据,如果失效,还得去 DB 查看 网盘数据 是最终一致性,上传文件到网盘需要时间,等文件完全上传完整后才会显示出来,这里有一个时间窗口需要等待 CDN 节点上的静态资源 是最终一致性,CDN 的作用有点像缓存,但是必须保证存储的资源是正确的 搜索引擎爬虫爬到的数据 是最终一致性,文中已有提及

    作者回复: 网盘这个我做个说明,我们这里讲的一致性是针对客户端而言的,如果客户端完成了上传,却立马读取不出来,需要过一个时间窗口才能读出来,这才是最终一致性。 因此,网盘是的一致性要看上面这条是怎么设计实现的,但是你说的这个上传过程,并不是它成为最终一致性的理由。

    2019-11-12
    2
  • 四喜
    复习一遍专栏,想起来请问下老师,什么场景下。数据持久化到缓存呀?能举个例吗

    作者回复: 比如文中介绍的浏览器缓存就是,它实际的存储形式有可能是磁盘上的文件,比如你曾经访问过的图片。

    2019-11-29
  • 简<单
    强一致性:关系数据库、本地文件 弱一致性:浏览器缓存 最终一致性:CDN 节点上的静态资源、搜索引擎爬虫爬到的数据、网盘数据 关系型数据库和本地文件我觉得是强一致性,他们每次读取的都是最近一次写入的数据 浏览器缓存我认为是弱一致性,因为如果缓存没有过期,那么就是直接命中,但是未过期的缓存未必就是服务端最新的 搜索引擎的爬虫数据老师文中已经说过了;对于CDN的静态资源,我没有接触过,但是按自己的想法,静态资源是变动较少的,那么每次变动,应该会主动推到CDN上,那么这个异步的过程也可以认为是一个时间窗口,所以我觉得是最终一致性 自己现在是刚入职前端的应届生,对于后端的这些知识了解都不足,在读了老师的专栏后,虽然技术可能不会立马成长,但是感觉自己的视野一下子变宽了许多,知道了以前不知道的很多知识,希望老师后面的课程越来越精彩,每天的扩展课堂也很期待~

    作者回复: 感谢。其实,你掌握的这些“知识”,或是学到的“技巧”,这些都是你的“技术”。

    2019-11-11
  • 四喜
    信息量很大,内容很多。如果有什么动态交互的方式可以学习的话。就好了。

    作者回复: 嗯,留言区就是用来交互的。除去有些问题不相关、不适合留言区讨论,或太过宽泛之外,一般的问题我都会答复。

    2019-11-11
  • 学习学个屁
    一致性哈子虚拟槽点,redis集群模式,动态添加删除节点原理是这样子
    2020-04-12
    1
  • 不要挑战自己的智商
    关系数据库, 本地文件 strong consistency 即便这个更新数据还为写入硬盘,只是在内存中,用户每次拿到的也是最新数据。 浏览器缓存, 网盘数据 weak consistency : 只要在缓存中有了,就用缓存的。即便数据在服务器上有更新, 客户端也得不到通知。除非客户端主动刷新。 CDN, 网页爬虫数据: eventual consistency ? 不具体清楚cdn 和网络爬虫是如何管理缓存的。。
    2020-08-22
  • 鹏😎
    努力学习中
    2019-11-06
收起评论
显示
设置
留言
7
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部