小机灵鬼|42 张图带你揭秘后端技术都要学啥?( 二 )


加了缓存哪些好处?

  • 应用程序不再直接访问数据库 , 提升访问效率 。 因为缓存内容在内存中 , 不用每次连接存放磁盘中的数据库 。
系统越来越火 , 于是考虑将应用服务器也作为集群 。
小机灵鬼|42 张图带你揭秘后端技术都要学啥?集群
小机灵鬼|42 张图带你揭秘后端技术都要学啥?缓存架构干啥啥不行 , 缓存第一名 。 不吹牛 , 缓存应用在计算机的各个角落 。 缓存可说是软件技术中的的杀手锏 , 无论是程序代码使用buffer , 还是网络架构中使用缓存 , 虚拟机也会使用大量的缓存 。
其实最初在CPU中也就开始使用缓存 。 缓存分为两种 , 一种是通读缓存 , 一种是旁路缓存
  • 通读缓存
假设当前应用程序获取数据 , 如果数据存在于通读缓存中就直接返回 。 如果不存在于通读缓存 , 那么就访问数据源 , 同时将数据存放于缓存中 。
下次访问就直接从缓存直接获取 。 比较常见的为CDN和反向代理 。
小机灵鬼|42 张图带你揭秘后端技术都要学啥?通读缓存
CDN
CDN称为内容分发网络 。 想象我们京东购物的时候 , 假设我们在成都 , 如果买的东西在成都仓库有就直接给我们寄送过来 , 可能半天就到了 , 用户体验也非常好 , 就不用从北京再寄过来 。
同样的道理 , 用户就可以近距离获得自己需要的数据 , 既提高了响应速度 , 又节约了网络带宽和服务器资源 。
  • 旁路缓存
应用程序需要自己从数据源读取数据 , 然后将这个数据写入到旁路缓存中 。 这样 , 下次应用程序需要数据的时候 , 就可以通过旁路缓存直接获得数据了 。
小机灵鬼|42 张图带你揭秘后端技术都要学啥?旁路缓存
缓存的好处
  • 因为大部分缓存的数据存储在内存中 , 相比于硬盘或者从网络中获取效率更高 , 响应时间更快 , 性能更好;
  • 通过 CDN 等通读缓存可以降低服务器的负载能力;
  • 因为缓存通常会记录计算结果 。 如果缓存命中直接返回 , 否则需要进行大量的运算 。 所以使用缓存也减少了CPU 的计算小号 , 加快处理速度 。
缓存缺点
我们缓存的数据来自源数据 , 如果源数据被修改了 , 俺么缓存数据很肯能也是被修改过的 , 成为脏数据 , 所以怎么办?
  • 过期失效
在每次写入缓存数据的时候标记失效时间 , 读取数据的时候检查数据是否失效 , 如果失效了就重新从数据源获取数据 。
  • 失效通知
应用程序在更新数据源的时候 , 通知清除缓存中的数据 。
是不是数据使用缓存都有意义呢?
非也 , 通常放入缓存中的数据都是带有热点的数据 , 比如当日热卖商品 , 或者热门吃瓜新闻 , 这样将数据存放在缓存中 , 会被多次读取 , 从而缓存的命中率也会比较高 。
小机灵鬼|42 张图带你揭秘后端技术都要学啥?异步架构在前面中 , 通过缓存实际上很多时候是解决了读的问题 , 加快了读取数据的能力 。 因为缓存通常很难保证数据的持久性和一致性 , 所以我们通常不会将数据直接写入缓存中 , 而是写入 RDBMAS 等数据中 , 那如何提升系统的写操作性能呢?


推荐阅读