Web服务器可以缓解压力,你必须知道如何使用缓存
为什么要应用缓存
一般情况下,页面浏览量达到一定规模后,数据库的读写能力就会成为短板,人们会选择一些方式来缓解数据库的压力,使其能够正常工作。可以考虑的方式有读写分离、增加缓存网络服务器等。读写分离是尽可能的分离数据库的读写能力,减少相互伤害;当增加缓存方便读取数据库时,减少了立即加载数据库的姿态,搜索结果存储在缓存中,用户的请求被数据库屏蔽,减轻了数据库的工作压力。
这是一种理想化的缓存方法,但这只是理想化的。
缓存通过
说白了,缓存访问就是用户在缓存系统软件中搜索结果的请求无效,然后去后端开发分布式存储搜索数据信息。这时候如果没有数据信息,而且这个浏览量也比较大,很多浏览会立刻调用数据库,对于这时负责存储的网络服务器来说就是悲剧了(如果左图)。因此,人们必须做一些努力,以确保在没有数据信息时,将标签加载到缓存中也会/。
也可以将确定为空或空的搜索结果存储在独立的缓存区。
缓存滑坡
又是一个难题。当系统软件应用的缓存出现意外情况时(如互联网故障、服务器宕机、服务项挂起、缓存组丢失等),缓存组失效,导致所有请求短时间内到达数据库(数据存储层),导致数据库承受巨大压力而崩溃。
为了防止这种情况,人们选择以下方法:
1.人们选择多案例的方法来保证缓存的可扩展性,并试图在某些案例出现问题时减少全局缓存的问题。这样的方案有很多,比如memcache的一致hash,redis的集群机制,防止spotshooting的常见故障。这类资料可以搜索一下关于redis或者memcache的高可用计划。
2.降级机制。这种方式也会在很多高可用设计方案中有所描述。简单来说,人们会保护用户不受用户影响,保护资源不受资源影响。当某一部分数据信息引发问题或者某一部分的请求达到阈值时,根据预设的机制,只会将请求返回给网络的热点数据信息,以保证手机客户端不会轻易引发全景天窗始终无法响应的问题。
3.锁定。在响应传入的请求时,人们使用锁机制使它们排队以尽可能多地解决它们,从而降低对数据库的高并发性。有两种锁计划可以参考。一种是应用全局锁或字符串数组锁,这意味着当一个请求被实际 *** 作时,其他请求正在等待。当这个请求被处理时,下一个业务流程将被执行。但是,如果一个请求挂掉了,就会对后面长长的请求队列造成伤害,请求在短时间内不容易处理。这将导致请求被阻塞的时间过长等问题。第二个计划是在实际 *** 作和其他请求的情况下识别是否有锁。如果有锁,立即绕过解决方案,返回网络的热数据信息。
不得不说,降级机制不一定要放在图的这个部分,也可以放在缓存前面或者其他部分。其关键目的是在出现问题时保护有问题的资源,以免损害手机客户端的内容或使部分用户的请求无法到达真实的域模型,从而减轻业务流程解决方案的工作压力。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)