缓存架构的实现

缓存架构的实现需要解决的最主要的问题就是如何更新缓存,具体有由业务方更新和由后台线程更新两种方式:

  1. 业务方更新:业务方请求不到缓存数据之后,去存储系统中获取并生成缓存数据。这里需要解决的一个问题是如果多个业务方同时遇到缓存失效的问题,那么所有业务方都会请求存储系统并更新缓存,这样会对业务系统和缓存都造成很大的压力。这时候需要有个分布式锁,保证只有一个线程能进行缓存更新,未获取锁的线程要不就等锁释放后重新读取缓存,要不就返回空值。
  2. 后台线程更新:缓存时效设置为永久,由后台线程去更新缓存。这里需要解决的问题是有一些key会被踢出缓存系统的情况。这里可以有两种处理方式,第一种是后台线程频繁的读取缓存,把被踢出的key再加入缓存;一种是业务方获取不到key之后,打一个获取不到的消息到消息队列中,后台线程从消息队列中得到通知,更新缓存。更新前需要检查key是否存在,因为有可能有很多个业务方同时都获取不到key。
comments powered by Disqus