分布式技术原理与算法解析
聂鹏程
智载云帆CTO,前华为分布式Lab资深技术专家
立即订阅
6105 人已学习
课程目录
已完结 39 讲
0/4登录后,你可以任选4讲全文学习。
课前必读 (3讲)
开篇词 | 四纵四横,带你透彻理解分布式技术
免费
01 | 分布式缘何而起:从单兵,到游击队,到集团军
02 | 分布式系统的指标:啥是分布式的三围
第一站:分布式协调与同步 (6讲)
03 | 分布式互斥:有你没我,有我没你
04 | 分布式选举:国不可一日无君
05 | 分布式共识:存异求同
06 | 分布式事务:All or nothing
07 | 分布式锁:关键重地,非请勿入
08 | 分布式技术是如何引爆人工智能的?
第二站:分布式资源管理与负载调度 (6讲)
09 | 分布式体系结构之集中式结构:一人在上,万人在下
10 | 分布式体系结构之非集中式结构:众生平等
11 | 分布式调度架构之单体调度:物质文明、精神文明一手抓
12 | 分布式调度架构之两层调度:物质文明、精神文明两手抓
13 | 分布式调度架构之共享状态调度:物质文明、精神文明多手协商抓
14 | 答疑篇:分布式事务与分布式锁相关问题
第三站:分布式计算技术 (4讲)
15 | 分布式计算模式之MR:一门同流合污的艺术
16 | 分布式计算模式之Stream:一门背锅的艺术
17 | 分布式计算模式之Actor:一门甩锅的艺术
18 | 分布式计算模式之流水线:你方唱罢我登场
第四站:分布式通信技术 (4讲)
19 | 分布式通信之远程调用:我是你的千里眼
20 | 分布式通信之发布订阅:送货上门
21 | 分布式通信之消息队列:货物自取
22 | 答疑篇:分布式体系架构与分布式计算相关问题
第五站:分布式数据存储 (5讲)
23 | CAP理论:这顶帽子我不想要
24 | 分布式数据存储系统之三要素:顾客、导购与货架
25 | 数据分布方式之哈希与一致性哈希:“掐指一算”与“掐指两算”的事
26 | 分布式数据复制技术:分身有术
27 | 分布式数据之缓存技术:“身手钥钱”随身带
特别放送 (3讲)
特别放送 | 分布式下的一致性杂谈
特别放送 | 徐志强:学习这件事儿,不到长城非好汉
特别放送 | 那些你不能错过的分布式系统论文
第六站:分布式高可靠 (5讲)
28 | 分布式高可靠之负载均衡:不患寡,而患不均
29 | 分布式高可靠之流量控制:大禹治水,在疏不在堵
30 | 分布式高可用之故障隔离:当断不断,反受其乱
31 | 分布式高可用之故障恢复:知错能改,善莫大焉
32 | 答疑篇:如何判断并解决网络分区问题?
第七站:分布式核心知识串讲 (2讲)
33 | 知识串联:以购买火车票的流程串联分布式核心技术
34 | 搭建一个分布式实验环境:纸上得来终觉浅,绝知此事要躬行
结束语 (1讲)
结束语 | 为什么说提升职业竞争力要从尊重、诚实开始?
分布式技术原理与算法解析
登录|注册

27 | 分布式数据之缓存技术:“身手钥钱”随身带

聂鹏程 2019-11-27
你好,我是聂鹏程。今天,我来继续带你打卡分布式核心技术。
不知不觉,分布式数据存储这一站已经到了最后一讲。在前面几讲,我与你分享了 CAP 理论、分布式存储系统的三要素(顾客、导购和货架)、数据分布式分片方法和数据复制技术,其中数据分片方法和数据复制技术均是导购中的关键技术。
在这一讲,我将为你讲解分布式存储中“货架”的关键技术——缓存技术。
在计算机领域的各个方面,缓存都非常重要,是提升访问性能的一个重要技术。为什么这么说呢?
从单个计算机的体系结构来看,内存和处理器速度差异很大,如果不采用缓存技术,处理器的性能会受到很大的限制。
再看计算机应用,如果不采用缓存技术,对于每个请求,应用都要与后台数据库做一次交互,而数据库中的数据存储在磁盘上,因此每次请求都要和磁盘做交互,而磁盘访问的性能很低,造成访问延迟。
除此之外,还有网络访问,如果没有缓存机制,每次访问主机都要与远程机器做交互,速度又可想而知。
接下来,我们就一起打卡分布式缓存技术吧。

什么是分布式缓存?

打比方来说,缓存技术其实就像一个水缸,平时它会存储一定的水,而这些水就来自深井。如果每次都去深井打水,一方面井口比较小,导致一次能接收的用水请求有限;另一方面,井比较深,打水的工序比较复杂,导致所需时间比较长。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《分布式技术原理与算法解析》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(9)

  • Eternal

    老师总结的“缓存的概念是相对的,基于不同的背景或应用场景,缓存所映射的存储设备是不一样的” 印象很很深刻。
    计算机冯诺依曼模型中的不同部分的数据读写速度差别很大:CPU>内存>磁盘 因为这个根本的原因演化出不同场景的缓存技术。

    总结留言区看到的,老师讲的和我自己想到的一些思考:

    1.计算机体系结构中的缓存,CPU和内存之间有三级缓存,这个是固化在硬件中了
    2.网络访问中的缓存,通过网络访问数据时,需要与远程服务器交互来进行传输,将经常访问的数据缓存在磁盘,减少网络请求的次数
    3.内存和磁盘文件数据交互的时候,内存中会缓存磁盘数据页码信息(索引信息),数据交互的时候用这个索引数据定位具体位置
    4.DNS解析域名的时候,不会每次都到根服务器取查询,会将最域名对应的IP地址缓存到最近的路由器里

    不同的应用场景,如果两个模块需要做数据交互,但是二者的处理能力不一致,我们都一个在两者之间搭建一个桥梁缓解这种不平衡
    前面讲的1,2,3,4是数据缓存,我觉得缓冲也是为了解决两者处理能力不平衡的问题,比如批量技术,比如压缩技术也是。


    我的方面记忆的例子:
    一个前端请求进来,做域名解析的时候DSN需要做地址解析缓存;
    如果有静态资源访问,cdn可以缓存静态资源,nginx可以缓存静态网页
    请求到达应用实例需要查询数据库的数据给用户,如果数据是热点数据,或者不怎么变的数据,可以在redis做数据缓存
    如果一定要查询数据库,通过数据库的索引(索引一般缓存到内存)可以快速定位到数据所在的位置,
    如果需要查询的数据页当前没在内存中,现在需要从磁盘文件中获取,最后才讲数据返回给用户
    用户可以在客户端自己缓存一些不怎么变化的数据,减少查询的次数
    如果这个请求访问A系统,A系统还需要通过RPC、http、rmi等网络访问B系统获取数据,这个时候A和B交互也可以做缓存


    为了平衡模块之间处理能力不平衡,可以用缓存,缓冲
    为了减少模块之间的交互,提高处理效率,可以用缓存,缓冲
    2019-11-30
    3
  • leslie
    其实目前应当是mongodb在走向主流:它所承担的东西/事情在越来越重,关系型数据库由于Nosql的变化而自身在主动变化。举个例子:mysql 5.7之前不支持json,但是5.7开始支持了。memcached的应当十余年了:它的出现就是充分利用了内存。
          这条界线我个人一直觉得在越来越模糊:随着硬件代价的变化,各种方式在不断的调整自身的重点和特性去更好的去服务生产环境。甚至我觉得:关系型和非关系型这条界线都在淡化,只是适用场景不同-仅此而已。
    2019-11-27
    2
  • 蓝魔丶
    老师有个问题:redis集群的哈希槽和memcached的带虚拟节点的一致性哈希算法是不是类似的呀,都是表现为一个节点管理一部分hash值范围数据,文章中怎么感觉区别很大?
    2019-11-27
    2
    1
  • 小明
    redis.是通过集群部署实现高可用的还是主备?
    2019-12-12
  • 振超
    对于 Redis 集群的异地多活这块,想请问老师有没有好的解决思路,之前项目第一版是基于 LWW 解决复制冲突,目前计划引入 CRDT 去解决复制冲突
    2019-12-01
  • 阿卡牛
    缓存的思想在计算机和网络中无处不在,根本的原因是不同的硬件速度并不知道匹配。我们想最大化地利用硬件资源提高系统的性能。就是不想某些设备忙成狗而另一些设备却葛优瘫,真是“黑心“老板:)
    2019-11-30
  • 阿卡牛
    Paxos的相关知识在哪些章节会有介绍?
    2019-11-30
  • 任鹏斌
    cdn缓存静态资源,nginx缓存静态网页等
    2019-11-28
  • Jackey
    对Redis了解还是比较多的,过段时间也准备研究研究Memcached。至于其他的分布式缓存,暂时只想到了阿里的Tair,不过用的不多,也就没有做更多了解
    2019-11-27
收起评论
9
返回
顶部