[缓存] 单机缓存和预热机制
参考博客:https://blog.csdn.net/as02446418/article/details/47913387
缓存的作用:
对于读操作,将热点数据放在内存中,提高响应速度,减少对低速设备的访问。
对于写操作,将数据放在缓冲区(一般为磁盘块大小的倍数),缓冲区满后再写入磁盘,减少访问数量。
1.单机缓存
包括硬件带来的缓存机制(如磁盘缓存),和系统维护的缓存区。
1)硬盘缓存
这里指在硬盘上单独的DRAM单元,由磁盘驱动维护缓存。一般不能修改,只是用于提高读写性能和减少读写次数。
2)系统缓存
包括:内核态的IO缓存、用户态的应用程序缓存、物理设备(如网卡)的缓存。
读取或写入数据时,先将数据写入用户态缓存,然后flush拷贝到内核态的IO缓存,由OS定期或根据策略写入外设。
也可以把内核态的IO缓存看作System cache。
2.冷热数据
当使用redis、elastic search等中间件时,无法把所有数据全部保存在内存中。因此需要对数据进行冷热分级。
即将常常访问的数据作为热数据,放在内存中,将不常常访问的数据作为冷数据,保存在磁盘中。当然有些大型的NAS架构有更多级,如温数据等。
然后需要设置某种机制决定缓存的清除策略。https://www.cnblogs.com/cheungilin/articles/15464971.html
3.数据预热
某些数据虽然目前没有受到大量访问,但可以预计它将是热点数据(例如淘宝首页的信息)。
因此需要让这些数据常驻在内存中,不受清除策略的影响。
1)设置后台程序,每隔一段时间自行访问标定数据,使得这些数据被刷入到System cache。
2)索引分离,对于ES,可以将热点数据从原本的索引中单独拆分,避免保存的数据过大。