缓存更新策略:怎样使用主流缓存更新策略来减少服务器性能消耗?
【温馨提醒】文章内容仅供参考,海外服务器租用\托管方案,请咨询YINGSOO客服,24小时免费电话400-630-3752
【热门主机】韩国站群服务器丨美国站群服务器丨香港站群服务器丨韩国站群服务器
【热搜问题】站群服务器选哪个节点更合适?性价比之王非它莫属!
在互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。
一、为什么需要缓存?
一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写频率常常都是不均匀分布的,大多情况是读多写少,并且读操作(select)还会有一些复杂的判断条件,比如like、group、join等等,这些语法是非常消耗性能的,所以会出现很多的慢查询,因此数据库很容易在读操作的环节遇到瓶颈。
那么通过在数据库前面,前置一个缓存服务,就可以有效的吸收不均匀的请求,抵挡流量波峰。
另外,如果应用与数据源不在同一个服务器,中间还会有很多的网络消耗,也会对应用的响应速度有很大影响,如果当前应用对数据实时性的要求不那么强的话,在应用侧加上缓存就能很快速地提升效率。
二、使用缓存会遇到哪些问题?
虽然缓存可以提高整体性能,但是它也可能会带来别的问题。
例如使用缓存之后,就相当于把数据存放了2份,一份是在数据库中,另一份存放在缓存中。当有新的数据要写入或者旧数据需要更新的时候,如果我们只更新了其中一份数据源,那两边的数据就不一致了。所以这里就存在一个缓存数据与数据库数据如何进行有效且快速的同步才可以保证数据最终一致性的问题。
另外,加上缓存服务其实也引入了系统架构的复杂度,因为还需要额外的关注缓存自身带来的下列问题:
1、缓存的过期时间问题
设计缓存的过期时间非常需要有技巧,且必须与业务实际情况相结合。因为如果设计的过期时间太短了,那会导致缓存效果不佳,而且还会造成频繁的从数据库中往缓存里写数据;如果缓存设计的过期时间太长了,又会导致内存的浪费。
2、缓存的命中率问题
这也是设计缓存中需要存放哪些数据的很重要一点。如果设计的不好,可能会导致缓存命中率过低,失去缓存效果。一般对于热点数据而言,要保证命中率达到[澳大利亚服务器租用]70%以上效果最佳。
3、缓存的穿透/雪崩问题
穿透/雪崩问题是指如果缓存服务一旦宕机或全部丢失,那么有可能一瞬间所有的流量都直接打到了后端数据库上,可能会造成连锁反应,瞬间的请求高峰极有可能导致数据库无法承载。
三、缓存的更新策略具体有哪些?
典型的缓存模式,一般有如下几种:
cache Aside;
Read/write through;
write behind。
每种模式都有不同的特点,适用于不同的项目场景,下面来依次看看:
1、cache Aside模式
这是大家经常用到的一种策略模式。这种模式主要流程如下:
应用在查询数据的时候,先从缓存cache中读取数据,如果缓存中没有,则再从数据库中读取数据,得到数据库的数据之后,将这个数据也放到缓存cache中;
如果应用要更新某个数据,也是先去更新数据库中的数据,更新完成之后,则通过指令让缓存cache中的数据失效。
这里为什么不让更新操作在写完数据库之后,紧接着去把缓存cache中的数据也修改了呢?
主要是因为这样做的话,就有2个写操作的事件了,担心在并发的情况下会导致脏数据,举个例子:
假如同时有2个请求(请求A和请求b)并发的执行。请求A是要去读数据,请求b是要去更新数据。初始状态缓存中是没有数据的,当请求A读到数据之后,准备往回写的时候,此刻,请求b正好要更新数据,更新完了数据库之后,又去把缓存更新了,那请求A再往缓存中写的就是旧数据了,属于脏数据。
那么cache Aside模式就没有脏数据问题了吗?不是的,在极端情况下也可能会产生脏数据,比如:
假如同时有2个请求(请求A和请求b)并发的执行。请求A是要去读数据,请求b是要去写数据。假如初始状态缓存中没有这个数据,那请求A发现缓存中没有数据,就会去数据库中读数据,读到了数据准备写回缓存中,就在这个时候,请求b是要去写数据的,请求b在写完数据库的数据之后,又去设置了缓存失效。这个时候,请求A由于在数据库中读到了之前的旧数据,开始往缓存中写数据了,此时写进入的就也是旧数据。那么最终就会导致,缓存中的数据与数据库的数据不一致,造成了脏数据。
不过这种概率比上面一种概率要小很多。所以整体而言cache Aside模式还是一种比较简单实用的方式。
2、Read/write through模式
这个模式其实就是将缓存服务作为主要的存储,应用的所有读写请求都是直接与缓存服务打交道,而不管最后端的数据库了,数据库的数据由缓存服务来维护和更新。不过缓存中数据变更的时候是同步去更新数据库的,在应用的眼中只有缓存服务。
流程就相当简单了:
应用要读数据和更新数据都直接访问缓存服务;
缓存服务同步的将数据更新到数据库。
这个模式出现脏数据的概率就比较低,但是就强依赖缓存了,对缓存服务的稳定性有较大要求。另外,增加新缓存节点时还会有初始状态空数据问题。
3、write behind模式
这个模式就是Read/write through模式的一个变种。区别就是Read/write through模式的缓存写数据库的时候是同步的,而write[服务器租用美国高防] behind模式的缓存操作数据库是异步的。
流程如下:
应用要读数据和更新数据都直接访问缓存服务;
缓存服务异步的将数据更新到数据库(通过异步任务)。
这个模式的特点就是速度很快,效率会非常高,但是数据的一致性比较差,还可能会有数据丢失的情况,实现逻辑也较为复杂。
以上就是目前三种主流的缓存更新策略,另外还有Refrsh-Ahead模式等由于使用的不是很常见就不详细介绍了。
缓存是互联网项目中非常普遍的一个提高效率的方案,用法比较多,也比较关键,大家可以一起交流。
本公司九年的idc运营经验,托管全球国内外服务器租用托管、机柜租用、带宽租用、虚拟主机、云主机、cdn等业务,同时提供高防服务器安全服务,欢迎广大客户来电咨询。
什么因素会影响香港服务器的稳定性
[香港主机哪个好] 所租用的服务器的稳定性的好坏,会直接影响到网站的稳定性,从而影响到网站的排名。所租用的香港服务器不稳定,会直接导致网站服务中断,进而造成网站的排名下降。严重的时候会直接导致网站被K站处理。那么香港服务器的稳定主要受哪些因素影响呢?
1、数据中心环境
服务器是需要存放在数据中心的,数据中心的环境会直接影响到服务器的稳定性的。一般情况下,数据中心都是具备完善的制度,以此来保障服务器能够长时间的持续运行的。一般都会配有各类硬件设备,例如发电组、恒温蛇摆、自动灭火装置,来去避免一些引起服务器无法正常运行的因素。
2、线路
不同线路,会使网络的稳定性受到一定的影响。如果因为带宽不足或者线路的问题。都是会直接影响到服务器的稳定运行的。由于香港地区的国际线路资源还是比较多的,大多是国际的BGP线路。所以在选择香港服务器时,选择BGP[身临其境了解跨国公司顶级数据中心]线路稳定性都还是比较好的。
3、网络攻击问题
网络攻击也是一个影响服务器稳定性的一个因素,配置资源充足的服务器,在遇到网络攻击时,特别是DDOS攻击,这一类流量攻击,就算拥有比较充足的带宽,服务器的稳定性还是会受到一定的影响。所以通常面对比较容易遭受网络攻击类的行业,在选择服务器时,可以尽量选择具备高防御的香港服务器,这样的话,即使存在攻击,也不会对自己的业务带来比较大的影响。
YINGSOO:WWW.YINGSOO.COM
热门文章:【vps日本节点】【国外高防服务器推荐选韩国吗】【什么是虚拟主机】【云服务器怎么样】【德国vps】【香港服务器免备案是合法的吗】【互联网网站】【判断服务器攻击情况】【韩国快速稳定服务器推荐】【国抗攻击服务器是怎样的】【游戏直播服务器】【广州移动】【俄罗斯服务器】【租用服务器多少钱】【国外高配置服务器如何选】【服务器集群】【云服务器是什么意思】【云宽带】【服务器租用商】【国外CDN节点】【稳定香港服务器租用的一些小问题】【云服务器带宽如何计算】【香港vps哪家好】【聚美优品】【浙江服务器租用】【服务器托管前后应该注意哪些问题】【企业BGP服务器】【香港带宽】【游戏高防cdn】【国外高防服务器哪家的好】
9年台湾试用主机服务商,超过1200家企业共同选择,五星机房品质,带控制台.立即申请台湾试用主机3天免费试用,,专业数据灾备方案,24小时贴心服务
https://www.yingsoo.com/products/cloud-tw.html
好网络,不怕晒!日本租赁主机免费试用,独享控制面板,海外云服务品牌2019年日本租赁主机销量再度破表,1200家企业共同选择,高达95%的续约率
https://www.yingsoo.com/products/cloud-jp.html
版权声明:本站文章来源标注为YINGSOO的内容版权均为本站所有,欢迎引用、转载,请保持原文完整并注明来源及原文链接。禁止复制或仿造本网站,禁止在非www.yingsoo.com所属的服务器上建立镜像,否则将依法追究法律责任。本站部分内容来源于网友推荐、互联网收集整理而来,仅供学习参考,不代表本站立场,如有内容涉嫌侵权,请联系alex-e#qq.com处理。