• Eternal
    2019-11-30

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

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

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

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


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


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