【系统架构师-案例题-分布式数据缓存架构】22年下(3)分布式仓储货物管理系统


一、完整题目

【说明】

某大型电商平台建立了一个在线B2B商店系统,并在全国多地建设了货物仓储中心,通过提前备货的方式来提高货物的运送效率。但是在运营过程中,发现会出现很多跨仓储中心调货从而延误货物运送的情况。为此,该企业计划新建立一个全国仓储货物管理系统,在实现仓储中心常规管理功能之外,通过对在线B2B商店系统中订单信息进行及时的分析和挖掘,并通过大数据分析预测各地仓储中心中各类货物的配置数量,从而提高运送效率,降低成本。

当用户通过在线B2B商店系统选购货物时,全国仓储货物管理系统会通过该用户所在地址、商品类别以及仓储中心的货物信息和地址,实时为用户订单反馈货物起运地(某仓储中心)并预测送达时间。反馈送达时间的响应时间应小于1秒。

为满足反馈送达时间功能的性能要求,设计团队建议在全国仓储货物管理系统中采用数据缓存集群的方式,将仓储中心基本信息、商品类别以及库存数量放置在内存的缓存中,而仓储中心的其它商品信息则存储在数据库系统。

【问题1】(9分)

设计团队在讨论缓存和数据库的数据一致性问题时,李工建议采取数据实时同步更新方案,而张工则建议采用数据异步准实时更新方案。

请用200字以内的文字,简要介绍两种方案的基本思路,说明全国仓储货物管理系统应该采用哪种方案,并说明采取该方案的原因。

【问题2】(9分)

随着业务的发展,仓储中心以及商品的数量日益增加,需要对集群部署多个缓存节点,提高缓存的处理能力。李工建议采用缓存分片方法,把缓存的数据拆分到多个节点分别存储,减轻单个缓存节点的访问压力,达到分流效果。

缓存分片方法常用的有哈希算法和一致性哈希算法,李工建议采用一致性哈希算法来进行分片。请用200字以内的文字简要说明两种算法的基本原理,并说明李工采用一致性哈希算法的原因。

【问题3】(7分)

全国仓储货物管理系统开发完成,在运营一段时间后,系统维护人员发现大量黑客故意发起非法的商品送达时间查询请求,造成了缓存击穿。张工建议尽快采用布隆过滤器方法解决。请用200字以内的文字解释布隆过滤器的工作原理和优缺点。


二、完整参考答案

【问题1】

  1. 方案思路
    • 数据实时同步更新方案:数据库数据更新时,同步更新缓存数据,保证缓存与数据库的强一致性
    • 数据异步准实时更新方案:数据库更新后,通过消息队列/发布订阅异步更新缓存,仅保证最终一致性
  2. 选型与理由
    本系统应采用数据实时同步更新方案
    理由:系统要求订单反馈响应时间<1秒,且库存、仓储信息属于强一致性要求极高的业务场景,异步方案可能导致缓存数据滞后,引发调货、超时等业务问题,实时方案可保障数据准确性与业务正确性。

【问题2】

  1. 算法原理
    • 普通哈希分片:对key做哈希运算后,按节点数取模分配数据,类似取余操作,余数相同的key分配到同一节点。
    • 一致性哈希分片:将存储节点和数据key都映射到哈希环上,数据按顺时针方向存储到第一个遇到的节点上。
  2. 选型理由
    采用一致性哈希算法的原因:普通哈希分片在节点扩容/缩容时,需重新计算几乎所有key的分配,导致大量数据迁移;一致性哈希仅需迁移少量数据,支持动态扩缩容,适配仓储、商品数量无上限的业务场景,保障系统扩展性。

【问题3】

  1. 工作原理
    布隆过滤器由一个超长二进制向量和一系列随机映射函数组成,用于快速判断元素是否存在于集合中。将集合中元素通过k个哈希函数映射到二进制向量的k个位置并置1;查询时,若对应位置全为1则判定元素存在,否则不存在,可直接过滤不存在的查询,避免缓存击穿。
  2. 优缺点
    • 优点:空间效率极高、查询速度远快于普通算法、无需存储元素本身,适合高并发场景。
    • 缺点:存在一定误判率(误将不存在元素判定为存在)、元素删除困难、无法获取元素本身。

三、完整解析

【问题1解析】

缓存与数据库一致性是缓存架构的核心问题,两种方案的适用场景完全不同:

  • 实时同步方案:属于强一致性方案,适用于金融、库存等对数据准确性要求极高的场景,缺点是增加了单次请求的耗时,需通过优化同步逻辑保障性能。
  • 异步准实时方案 :属于最终一致性方案,适用于商品详情、资讯等对实时性要求不高的场景,优点是性能高、不阻塞主流程。
    本系统的库存、仓储信息直接影响订单履约,数据不一致会导致严重的业务事故,因此必须选择实时同步方案。

【问题2解析】

缓存分片是缓存集群横向扩展的核心技术,两种算法的核心差异在于动态扩缩容的成本

  • 普通哈希分片的取余逻辑,导致节点数量变化时,几乎所有key的哈希取余结果都会改变,引发全量数据迁移,系统可用性大幅下降,仅适用于节点数量固定的场景。
  • 一致性哈希通过哈希环的设计,将数据迁移范围控制在新增/删除节点的相邻区间,仅需迁移少量数据,大幅降低扩缩容对系统的影响,是分布式缓存(如Redis Cluster)的主流分片方案,完美适配本系统业务量持续增长的需求。

【问题3解析】

缓存击穿是指大量请求查询缓存中不存在的key,导致请求直接穿透到数据库,引发数据库压力骤增。布隆过滤器是解决该问题的经典方案:

  • 核心价值:在缓存层前增加一层过滤,直接拦截不存在的key的请求,避免数据库被打垮,同时空间占用极低,适合海量数据场景。
  • 局限性:误判率可通过调整二进制向量长度、哈希函数数量优化,但无法完全消除;删除元素需使用计数布隆过滤器等变种方案,增加了实现复杂度。
  • 适用场景:本系统中,可将所有合法的商品ID、仓储ID存入布隆过滤器,非法查询直接被拦截,从根源解决缓存击穿问题。

四、题目归类

本题属于软考系统架构设计师考试中,分布式缓存架构设计类案例分析题,核心考点覆盖:

  1. 缓存与数据库一致性方案选型
  2. 分布式缓存分片算法(一致性哈希)
  3. 缓存击穿解决方案(布隆过滤器)
    是互联网电商、物流系统架构设计的经典高频考点。
相关推荐
玄芯散人23 分钟前
【筑基·047】内存Hierarchy:寄存器到硬盘的速度差
缓存·内存·计算机基础
xhbh6662 小时前
中小企业 Redis 运维,如何安全归档 RDB、AOF 备份文件?
运维·数据库·缓存·数据备份·文件备份·同步备份·号码备份
闲云自留地3 小时前
云平台存储管理员:Cinder 创建挂载卷 + Swift 分布式存储原理
分布式·wpf·swift
橙子圆1237 小时前
RabbitMQ知识1
分布式·rabbitmq
奔跑吧树袋熊7 小时前
多租户隔离该做到哪一层:从连接池到 ORM 的取舍
开发语言·数据库·oracle·系统架构
clz13145218 小时前
风险特征系统 EPC 子系统:基于 Kafka 数据源与数据集配置的 Flink 指标清洗加工
分布式·flink·kafka
励志不掉头发的内向程序员9 小时前
【LibreCAD 2D架构】从 addHistory 到 RS_UndoCycle:LibreCAD 里的两套 History 与撤销机制
开发语言·c++·qt·学习·系统架构
海上小飞龙10 小时前
分布式和微服务,一次讲清
分布式·微服务·架构
XiaoZhenHua9810 小时前
C#工业机器视觉软件架构设计:从能运行的Demo到能够稳定跑产线的软件
计算机视觉·系统架构·自动化
Wang's Blog10 小时前
Java框架快速入门: Spring Security+OAuth2之多因子认证缓存服务
java·spring·缓存