阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答问题。 【说明】 某初创企业的主营业务是为用户提供高度个性化的商品订购业务,其业务系统支持PC端、手机App等多种访问方式。系统上线后受到用户普遍欢迎,在线用户数和订单数量迅速增长,原有的关系数据库服务

admin2021-03-26  33

问题 阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答问题。
【说明】
某初创企业的主营业务是为用户提供高度个性化的商品订购业务,其业务系统支持PC端、手机App等多种访问方式。系统上线后受到用户普遍欢迎,在线用户数和订单数量迅速增长,原有的关系数据库服务器不能满足高速并发的业务要求。
为了减轻数据库服务器的压力,该企业采用了分布式缓存系统,将应用系统经常使用的数据放置在内存,降低对数据库服务器的查询请求,提高了系统性能。在使用缓存系统的过程中,企业碰到了一系列技术问题。
缓存系统一般以key/value形式存储数据,在系统运维中发现,部分针对缓存的查询,未在缓存系统中找到对应的key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。
经过运维人员的深入分析,发现存在两种情况:
(1)用户请求的key值在系统中不存在时,会查询数据库系统,加大了数据库服务器的压力;
(2)系统运行期间,发生了黑客攻击,以大量系统不存在的随机key发起了查询请求,从而导致了数据库服务器的宕机。
经过研究,研发团队决定,当在数据库中也未查找到该key时,在缓存系统中为key设置空值,防止对数据库服务器发起重复查询。
请用100字以内文字说明该设置空值方案存在的问题,并给出解决思路。

选项

答案存在问题:不在系统中的key值是无限的,如果均设置key值为空,会造成内存资源的极大浪费,引起性能急剧下降。 解决思路;查询缓存之前,对key值进行过滤,只允许系统中存在的key进行后续操作(例如采用key的bitmap进行过滤)。

解析 该方法主要的思路是为系统中不存在的key,在缓存中增加该key,并设置key对应的值为空值,从而防止下次发起对数据库的查询操作。
该方法存在的问题是,不在系统中的key值是无限的,如果均设置key值为空,会造成内存资源的极大浪费,引起性能急剧下降。
解决思路是对于系统中存在的key值,在查询前进行过滤,只允许系统中存在的key进行后续操作。因为一般情况下,系统中的key是有限的,或者是符合某种规则的。例如可以采用key的bitmap进行过滤,降低过滤的消耗。
转载请注明原文地址:https://kaotiyun.com/show/ZAQZ777K
0

最新回复(0)