MST

星途 面试题库

面试题:缓存设计之分布式缓存一致性策略应用

假设你正在设计一个电商商品详情页的缓存系统,该系统为分布式架构,商品数据可能在多个节点被缓存。当商品信息更新时,如何设计一种有效的缓存一致性方案,确保各节点缓存数据尽快一致且对系统性能影响较小,详细阐述设计思路和关键步骤。
17.4万 热度难度
后端开发缓存设计

知识考点

AI 面试

面试题答案

一键面试

设计思路

  1. 使用发布 - 订阅模式:在商品信息更新时,通过消息队列(MQ)作为发布 - 订阅的媒介。商品信息更新服务作为发布者,将更新消息发送到MQ,而各个缓存节点作为订阅者,从MQ接收更新消息并处理。
  2. 版本控制:为每个商品数据添加版本号。每次商品信息更新时,版本号递增。缓存节点在处理更新消息时,通过对比版本号来决定是否应用更新,避免重复处理或处理旧版本数据。
  3. 缓存失效策略:结合定期失效和主动失效。定期失效设置一个合理的缓存过期时间,主动失效则是在接收到更新消息时立刻使缓存失效。

关键步骤

  1. 消息发送
    • 当商品信息更新操作在数据库完成后,商品服务向MQ发送一条包含商品ID、更新后数据(或至少包含版本号)的更新消息。
  2. 消息接收与处理
    • 每个缓存节点都有一个消费者从MQ接收消息。
    • 缓存节点接收到消息后,先根据商品ID找到对应的缓存数据。
    • 对比缓存数据中的版本号与消息中的版本号,如果消息中的版本号更高,则更新缓存数据为新数据(或直接使该商品缓存失效,后续请求时重新从数据库加载)。
  3. 缓存过期设置
    • 在缓存数据写入时,设置一个合理的过期时间(如几分钟到几小时不等,根据商品数据更新频率调整)。
    • 当缓存过期后,下一次请求该商品数据时,缓存节点从数据库读取最新数据并更新缓存,同时获取最新版本号。