分布式下缓存重建问题及解决方案
2021-01-12 14:25:14 0 举报
大型缓存架构项目-分布式下缓存重建问题的解决思路
作者其他创作
大纲/内容
cache服务
3、请求商品服务做缓存重建
nginx
redis分布式缓存
获取zookeeper分布式锁
从mysql中查询数据放入kafka中
缓存重建解决方案将缓存重建的请求异步的发送到kafka消息队列中,后台有个kafka消费线程处理,处理过程就是首先获取分布式锁,对比数据版本,然后释放分布式锁。
6、请求商品服务做缓存重建
/getProductInfo 请求
8、第一个缓存重建成功,redis第二次被更新
2、redis为空去本地cache请求也为空
消息中间件Kafka
分布式下缓存重建问题这个场景中,第一个缓存重建请求并不是第一个去更新redis的,相反是第二个缓存重建请求把redis更新了。这样就会造成一个问题,第二个缓存重建请求读取的数据库信息是最新的,然后最后一次更新redis却是第一个缓存重建请求的数据,导致redis的数据是旧数据。
ehcache堆缓存
mysql
4、nginx本地缓存为空
消费消息
商品服务
7、第二个缓存重建成功,redis第一次被更新
redis
return 结果
释放zookeeper分布式锁
1、nginx本地缓存为空
更新redis
5、redis为空去本地cache请求也为空
ehcache为空
缓存重建
Kafka消费线程处理
更新ehcache缓存
redis为空
0 条评论
下一页