每日一博 | 解析分布式系统的缓存设计
一、缓存简介 1.1 什么是缓存 缓存就是数据交换的缓冲区。缓存的本质是一个内存 Hash。缓存是一种利用空间换时间的设计,其目标就是更快、更近:极大的提高。 将数据写入/读取速度更快的存储(设备); 将数据缓存到离应用最近的位置; 将数据缓存到离用户最近的位置。 缓存是用于存储数据的硬件或软件的组成部分,以使得后续更快访问相应的数据。缓存中的数据可能是提前计算好的结果、数据的副本等。典型的应用场景:有 cpu cache, 磁盘 cache 等。本文中提及到缓存主要是指互联网应用中所使用的缓存组件。 缓存命中率是缓存的重要度量指标,命中率越高越好。 缓存命中率 = 从缓存中读取次数 / 总读取次数 1.2 何时需要缓存 引入缓存,会增加系统的复杂度。所以,引入缓存前,需要先权衡是否值得,考量点如下: CPU 开销- 如果应用某个计算需要消耗大量 CPU,可以考虑缓存其计算结果。典型场景:复杂的、频繁调用的正则计算;分布式计算中间状态等。 IO 开销- 如果数据库连接池比较繁忙,可以考虑缓存其查询结果。 在数据层引入缓存,有以下几个好处: 提升数据读取速度。 提升系统扩展能力,通过扩展...
