刷题刷出新高度,偷偷领先!偷偷领先!偷偷领先! 关注我们,悄悄成为最优秀的自己!

简答题

试题四(共25分)

阅读以下关于数据系统方面的叙述,在答题纸上回答问题1至问题3。


【说明】

某初创企业的主营业务是为用户提供高度个性化的商品订购业务,其业务系统支持PC端、手机App等多种访问方式。系统上线后受到用户普遍欢迎,在线用户数和订单数量迅速增长,原有的关系数据库服务器不能满足高速并发的业务要求。

为了减轻数据库服务器的压力,该企业采用了分布式缓存系统,将应用系统经常使用的数据放置在内存,降低对数据库服务器的查询请求,提高了系统性能。在使用缓存系统的过程中,企业碰到了一系列技术问题。

【问题2】(8分)

缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的查询,未在缓存系统中找到对应的key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。 经过运维人员的深入分析,发现存在两种情况:

(1) 用户请求的key值在系统中不存在时,会查询数据库系统,加大了数据库服务器的压力;

(2) 系统运行期间,发生了黑客攻击,以大量系统不存在的随机key发起了査询请求,从而导致了

数据库服务器的宕机。

经过研究,研发团队决定,当在数据库中也未查找到该key时,在缓存系统中为key设置空值,防止对数据库服务器发起重复查询。 请用100字以内文字说明该设置空值方案存在的问题,并给出解决思路。

使用微信搜索喵呜刷题,轻松应对考试!

答案:

【问题2】

答案:

存在问题:空值缓存需要更多的键,浪费内存空间

解决思路:查询缓存前,对 key 值进行过滤,只允许系统中存在的 key 进行后续操作(例如采用 key 的 bitmap 进行过滤)

解析:

缓存穿透是指查询的数据在缓存和数据库中都不存在,导致每次查询都会直接访问数据库。本题中描述的问题即为缓存穿透问题。针对该问题,设置空值方案虽然可以一定程度上减少数据库查询压力,但会造成缓存系统的资源浪费。更合理的解决方案是在查询缓存前对key进行过滤,只允许系统中存在的key进行查询,避免对不存在的key进行查询,从而防止缓存穿透。采用key的bitmap过滤是一种有效的解决方案,将系统中存在的key映射到bitmap中,对于不在bitmap中的key直接过滤掉,这样可以避免对数据库服务器发起不必要的查询请求,提高系统性能。

创作类型:
原创

本文链接:【问题2】(8分)缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的查询

版权声明:本站点所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明文章出处。

让学习像火箭一样快速,微信扫码,获取考试解析、体验刷题服务,开启你的学习加速器!

分享考题
share