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

admin2021-03-26  28

问题 阅读以下关于分布式数据库缓存设计的叙述,在答题纸上回答问题。
【说明】
某初创企业的主营业务是为用户提供高度个性化的商品订购业务,其业务系统支持PC端、手机App等多种访问方式。系统上线后受到用户普遍欢迎,在线用户数和订单数量迅速增长,原有的关系数据库服务器不能满足高速并发的业务要求。
为了减轻数据库服务器的压力,该企业采用了分布式缓存系统,将应用系统经常使用的数据放置在内存,降低对数据库服务器的查询请求,提高了系统性能。在使用缓存系统的过程中,企业碰到了一系列技术问题。
缓存系统中的key一般会存在有效期,超过有效期则key失效:有时也会根据LRU算法将某些key移出内存。当应用软件查询key时,如key失效或不在内存,会重新读取数据库,并更新缓存中的kev。
运维团队发现在某些情况下,若大量的kev设置了相同的失效时间,导致缓存在同一时刻众多kev同时失效,或者瞬间产生对缓存系统不存在kev的大量访问,或者缓存系统重启等原因,都会造成数据库服务器请求瞬时爆量,引起大量缓存更新操作,导致整个系统性能急剧下降,进而造成整个系统崩溃。
请用100字以内文字,给出解决该问题的两种不同思路。

选项

答案思路1:缓存失效后,通过加排它锁或者队列方式控制数据库写缓存的线程数量,使得缓存更新串行化; 思路2:给不同key设置随机或不同的失效时间,使失效时间的分布尽量均匀; 思路3:设置两级或多级缓存,避免访问数据库服务器。

解析 运维团队发现的大量缓存key值同时失效,从而导致整个系统性能急剧下降,进而造成整个系统崩溃。其主要的原因是key值失效,导致数据库服务器请求瞬时爆量,引起大量缓存更新操作,从而导致了系统性能急剧下降,系统崩溃。
解决该问题的思路就是采取某种做法,使得缓存中同一时间不会出现大量的key值失效。
具体的思路有:
1.缓存失效后,大量的缓存更新操作进行排队,通过加排它锁、队列等方式控制同时进行缓存更新操作的数量,使得缓存更新串行化,降低更新频率。此方式效果不佳,并没有从根源上解决大量缓存key值同时失效的问题。
2.在增加或更新缓存时,给不同kev设置随机或不同的失效时间,使失效时间的分布尽量均匀,从根源上避免大量缓存kev值同时失效。
3.设置两级或多级缓存,避免访问数据库服务器。此方式也没有从根源上解决大量缓存key值同时失效的问题。
转载请注明原文地址:https://jikaoti.com/ti/Rt67FFFM
0

最新回复(0)