什么是缓存

缓存的定义

**狭义缓存:**缓存最初的含义,用于加速CPU数据交换的RAM,即随机存取存储器,通常这种存储器使用昂贵但快速的静态RAM(SRAM)技术,用于对DRAM进行加速。
**广义缓存:**任何可以用于数据高速交换的存储介质都是缓存,可以是硬件也可以是缓存。

缓存的意义

缓存存在的意义就是通过开辟一个新的数据交换缓冲区,来解决原始数据获取代价太大的问题,让数据得到更快的访问。

缓存原理

缓存的基本思想

在这里插入图片描述
缓存构建的基本思想是:利用时间局限性原理,通过空间换时间来达到加速数据获取的目的。
由于缓存空间成本较高,在实际设计架构中需要考虑
访问延迟
成本的权衡问题。这里面有3个关键:

  1. **时间局限性原理。**即被获取过一次的数据在未来会被多次引用,比如一条微博被一个人感兴趣并阅读后,它大概率还会被更多人阅读,如果变成热门微博后,会被数以百万/千万计算的更多用户查看。
  2. **空间换时间。**因为原生数据获取太慢,所以开辟一块高速独立空间,提供高效访问,来达到加速获取数据的目的。
  3. **性能成本权衡Tradeoff。**构建系统时希望系统的访问 性能越高越好,访问延迟越低越好。但是维持相同数据规模的存储以及访问,性能越高延迟越小,成本也会高,所以在系统架构设计时,需要在系统性能和开发运行成本之间做取舍。比如上图,相同成本的容量,SSD硬盘容量会比内存大1030倍以上,但读写延迟却高50100倍。

缓存的优势

  • 提升访问性能
  • 降低网络拥堵
  • 减轻服务负载
  • 增强可扩展性

利用缓存存储原始数据,可以大幅度提升访问性能。不过在实际业务场景中,缓存中存储的是需要频繁访问的中间数据甚至是最终结果,这些数据相比DB中的原始数据小很多,这样就减少了网络流量,降低网络拥堵,同时由于减少了解析和计算,调用方和存储服务的负载也大幅降低。缓存的读写性能高,预热快,在数据访问存在性能瓶颈或遇到突发流量,系统读写压力大增时,可以快速部署上线,同时在流量稳定后,也可以随时下线,从而使系统的可扩展性大大增强。

缓存的代价

任何事情都有两面性,缓存也不例外,在享受缓存带来一系列好处的同时,也注定要付出一定的代价。
首先,服务系统中引入缓存,会增加系统的复杂度。
其次,由于缓存相比原始 DB 存储的成本更高,所以系统部署及运行的费用也会更高。
最后,由于一份数据同时存在缓存和 DB 中,甚至缓存内部也会有多个数据副本,多份数据就会存在一致性问题,同时缓存体系本身也会存在可用性问题和分区的问题。这就需要加强对缓存原理、缓存组件以及优秀缓存体系实践的理解,从系统架构之初就对缓存进行良好设计,降低缓存引入的副作用,让缓存体系成为服务系统高效稳定运行的强力基石。

一般来讲,服务系统的全量原始数据存储在DB中(如MySQL、HBase等),所有数据的读写都可以通过DB操作来获取。但DB读写性能低、延迟高,如MySQL单实例的读写QPS通常只有千级别(30006000),读写平均耗时(10100ms)级别,如果一个用户请求需要查20个不同数据来聚合,仅仅DB请求就需要数百毫秒甚至数秒。而cache得读写性能正好可以弥补DB得不足,比如Memcached的读写QPS可以达到10~100万级别,读写平均耗时在1ms以下,结合并发访问技术,单个请求即便查上百条数据,也可以轻松应对。但是cache容量小,只能存储部分访问频繁的热数据,同时,同一份数据可能同时存在cache和DB,如果处理不当,就会出现数据不一致的问题。所以服务系统在处理业务请求时,需要对cache的读写方式进行适当的设计,既要保证数据高效返回,又要尽量避免数据不一致等各种问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值