高级〜系统架构设计师〜第2章计算机与网络基础知识(11)
2024-06-16 来源:飞速影视
为了减轻数据库服务器的压力,该企业采用了分布式缓存系统,将应用系统经常使用的数据放置在内存,降低对数据库服务器的查询请求,提高了系统性能。在使用缓存系统的过程中,企业碰到了一系列技术问题。
该系统使用过程中,由于同样的数据分别存在于数据库和缓存系统中,必然会造成数据同步或数据不一致性的问题。该企业团队为解决这个问题,提出了如下解决思路:应用程序读数据时,首先读缓存,当该数据不在缓存时,再读取数据库;应用程序写数据吋,先写缓存,成功后再写数据库;或者先写数据库,再写缓存。
王工认为该解决思路并未解决数据同步或数据不一致性的问题,请用 100 字以内的文字解释其原因。
王工给出了一种可以解决该问题的数据读写步骤如下:读数据操作的基本步骤:
1. 根据 key 读缓存;
2. 读取成功则直接返回;
3. 若 key 不在缓存中时,根据 key (a) ; 4.读取成功后, (b) ;
5.成功返回。
写数据操作的基本步骤:
1. 根据 key 值写 (c) ;
2. 成功后 (d) ;
3. 成功返回。 .
请填写完善上述步骤中(a)~( d)处的空白内容。
缓存系统一般以 key/ value 形式存储数据,在系统运维中发现,部分针对缓存的杳询,未在缓存系统中找到对应的 key,从而引发了大量对数据库服务器的查询请求,最严重时甚至导致了数据库服务器的宕机。 经过运维人员的深入分析,发现存在两种情况: ( ) 用户请求的 key 值在系统中不存在时,会查询数据库系统,加大了数据库服务器的压力; ( ) 系统运行期间,发生了黒客攻击,以大量系统不存在的随机 key 发起了査询请求,从而导致了数据库服务器的宕机。 经过研究,研发团队决定,当在数据库中也未查找到该 key 时,在缓存系统中为 key 设置空值,防止对数据库服务器发起重复查询。请用 100 字以内文字说明该设置空值方案存在的问题,并给出解决思路。
缓存系统中的 key—般会存在有效期,超过有效期则 key 失效;有时也会根据 LRU 算法将某些 key 移出内存。当应用软件查询 key 时,如 key 失效或不在内存,会重新读取数据库,并更新缓存中的 key 。
运维团队发现在某些情况下,若大量的 key 设置了相同的失效时间,导致缓存在同一时刻众多 key 同时失效,或者瞬间产生对缓存系统不存在 key 的大量访问,或者缓存系统重启等原因,都会造成数据库服务器请求瞬时爆量,引起大量缓存更新操作,导致整个系统性能急剧下降,进而造成整个系统崩溃。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号