缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

一谈缓存,内心顿时豁然开朗 。迫于key-value的形式,总感觉轻风拂面,杨柳依依,一切都尽在我掌握之中 。犹如那一眼相中佳人的冲动,脑子里尽是佳人的容颜 。

缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

文章插图
 
那缓存如果站在网站架构的角度,你知道它的设计原理和影响作用吗?
絮叨在商业的世界里,常说的一句话是 "现金为王" 。在互联网、移动互联网乃至整个软件技术的世界里面,与之相近的就是 "缓存为王" 。
为何这么说呢?
试想一下,你个完整的网络请求(HTTP、SOAP、RPC等),如果在执行过程的某个部分尚有缓存,是不是就能提前响应给客户端呢?
为何现在很多中大型公司在面试时,对缓存的应用、原理、高可用等一系列问题,都一扑啦的扔给你,让你难以招架 。原因都在这 。
什么是缓存?
缓存:存储在计算机上的一个原始数据复制,以便于访问
--维基百科
缓存是系统快速响应中的一种关键技术,是一组被保存起来以备将来使用的东西 。介于应用开发和系统开发之间,是产品经理经常顾及不到的地方,也是技术架构设计中的非功能性约束 。
应用开发我知道,这系统缓存是个什么情况呀,小吒哥?
不要着急,往后面看
什么是多级缓存架构?顾名思义,由多个维度共同组成的缓存工程 。因为缓存在不同的场景有着不同的意义 。采用的技术手段也不同 。
按缓存存在形式分:
  1. 硬件缓存(如CPU、硬盘等)
  2. 操作系统缓存
  3. 软件缓存 系统缓存是什么?
操作系统是管理计算机硬件与软件资源的计算机程序,而硬、软件件运行速度的快慢基本由缓存决定,缓存的容量越大,相应的硬件运行速度也就越快 。所以系统缓存就是操作系统调用硬件资源(内存、文件等)和调用应用程序时,能够启动加速执行的作用 。
总结:操作系统存调用涉及到有缓存的部分,都可算系统缓存
 
软件运行都需建立在操作系统之上,在运行时需要把程序装载到内存中,但软件执行操作内存时都是基于虚拟内存映射的机制,并不是直接操作物理内存 。虚拟内存以块表(内存块组成的表格)的形式来存储相关资源 。
注:物理内存组成上由多个方块状的元素构成,该元素是内存管理的最小单位 。每一个元素有8个小电容,存储8个bit,即1字节 。
是不是和磁盘块差不多,^_^。吒吒辉懂你呀
为提高系统的存取速度,在 地址映射机制中增加了一个小容量的联想寄存器,即块表 。
缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

文章插图
内存块表
它 用来存放当前访问最频繁的少数活动页面的页数 。当某用户需存取数据时,根据数据所在的逻辑页号在块表中找到对应的内存块号,再联系其页内地址,形成物理地址 。
总结:读取数据时-->先找逻辑页--->排查内存块号--->获得物理层内存表示页内地址---->物理地址
如果块表中没有相应的逻辑页号,则地址映射仍然可以通过内存中的页表进行操作,只是它得到是空闲块号,必须将该块号填入块表中的空闲区 。如果块表中没有空闲区,则根据淘汰算法淘汰块表中的某一行,再填入新的页号和块号 。
我记得计算机获取缓存是按照就近原则的,那它们的优先级呢?
缓存会根据存储速度来选择最合适的存储器,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小
分层如下:寄存器(离CPU最近,寄存器速度最快)、高速缓存(缓存也是分级,有L1,L2等缓存)、主存(普通内存)、本地磁盘
 
缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

文章插图
 
日常开发常使缓存软件,根据软件系统所处位置不同,可分
  • 客户端缓存
  • 网络缓存
  • 服务端缓存
多级缓存就类似金字塔模式 。从上到下依次递减 。类似于一个漏斗来过滤流量请求 。如果绝大多数请求在客户端和网络交互的部分就抵消,那后端服务的压力就会大大减少 。
缓存只会用!缓存架构没听过?分布式多级缓存大瓶装,你拎包带走

文章插图
 
为什么使用多级缓存架构?根本在于为网站提供高性能服务,让用户具有更好的用户体验 。以较少的成本获取更大的性能空间 。


推荐阅读