缓存框架的使用原因与优缺点分析

2019/10/24 14:08:18 作者:蚌埠达内发布企业:蚌埠达内软件有限公司[打印]

随着互联网的不断发展,越来越多的人都开始学习软件编程开发技术,而今天我们就一起来了解一下,缓存框架的使用原因与优缺点分析。

1、为何使用缓存

在应用对外提供服务时,其稳定性受到诸多因素影响,其中比较重要的有CPU、内存、IO(磁盘IO、网络IO)等,这些硬件资源十分宝贵,因此对于那些需要经过复杂计算才能得到结果的,或者需要频繁读取磁盘数据的,好将结果缓存起来,避免资源的重复消耗。

2、CPU瓶颈

如果项目中有很多正则表达式计算,或者某个计算结果是多次中间结果合并后才得出的,且CPU的使用率一直居高不下,那么就可以考虑是否应该将这些结果缓存起来,根据特定Key直接获取Value结果,减少中间链路的传递过程,减少CPU的使用率。

3、IO瓶颈

众所周知,从磁盘获取数据受到磁盘转速、寻道速度、磁盘缓冲区大小等诸多因素影响,这些因素决定了磁盘的IOPS,同时我们也知道对于数据的读写来说,CPU的缓存读写速度>内存的读写速度>磁盘的读写速度。虽然磁盘内部也配备了缓存以匹配内存的读写速度,但其容量毕竟是有限的,那么当磁盘的IOPS无法进一步提升的时候,便会想到将数据缓存到内存中,从而降低磁盘的访问压力。这一策略常被应用于缓解DB数据库的数据访问压力。

4、选择本地缓存和分布式缓存的考量点

既然可以使用缓存来提升系统吞吐能力,那么紧接着遇到的问题就是选择本地缓存,还是分布式缓存什么时候需要使用多级缓存呢接下来,让我们聊一聊在使用缓存优化项目的过程中,本地缓存和分布式缓存的应用场景和优缺点。

5、本地缓存的优缺点和应用场景

统一进程带来了以下优势:

由于本地缓存和应用在同一个进程中,因而其稳定性很高,达到了和应用同生共死的境界;

由于在同一进程中,避免了网络数据传输带来的消耗,所有缓存数据直接从进程所在的内存区域获取即可。

强耦合性也会导致以下这些劣势:

本地缓存和应用共享一片内存,争抢内存资源,无法水平扩展,且可能造成频繁的GC,影响线上应用的稳定性。

由于没有持久化机制,在项目重启后缓存内数据就会丢失,对于高频访问数据,需要对数据进行预热操作。

多份进程内缓存存储着同样的数据内容,造成内存使用浪费。

同样的数据存储在不同的本地机器,数据变化后,很难保证数据的一致性。

结合以上优缺点,我们就会想到,如果有一种数据需要频繁访问,但一旦创建后就轻易不会改变,而且初始创建时就能预估占用的内存空间,那么这种类型的数据无疑是适合用本地缓存存储了。

既然有了上述的应用场景,反观技术开发中的诉求,发现其实很多优秀的框架已经在这样使用了,比如缓存类class的反射信息,包括field、method等。因为class的数量是有限的,且内容不会轻易改变,在使用时无需再使用反射机制,而只需要从本地缓存读取数据即可。

6、分布式缓存的优缺点和应用场景

优势:

数据集中存储,消除冗余数据,解决整体内存的占用率,易于维护集群建缓存数据的一致性。

缓存中间件可以对缓存进行统一管理,便于水平扩容。

劣势:

依赖分布式缓存中间件稳定性,一旦挂了,容易造成缓存雪崩;

由于是跨机器获取缓存数据,因此会造成数据传输的网络消耗,以及一些序列化/反序列化的时间开销。

对于上述缺点中,网络耗时等开销是难免的,而且这些操作耗费的时间在可接受范围内,而对于中间件的稳定性则可以通过服务降级、限流或者多级缓存思路来保证。主要看中的是它的优点,既然分布式缓存天然能保证缓存一致性,那么我们倾向于将需要频繁访问却又经常变化的数据存放于此。

【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。


关键字:蚌埠达内,软件开发班,电脑培训班
免责声明:以上所展示的信息由网友自行发布,内容的真实性、准确性和合法性由发布者负责。行业信息网对此不承担任何保证责任。任何单位或个人如对以上内容有权利主张(包括但不限于侵犯著作权、商业信誉等),请与我们联系并出示相关证据,我们将按国家相关法规即时移除。

其他新闻

关于我们 | 服务条款 | 网站指南 | 免责声明 | 友情链接 | 给我们留言
红盾
COPYRIGHT @ 2001-2017 CNlinfo.net ALL RIGHTS RESERVED
深圳市信息行业协会商务网站 运营商:深圳市兴讯信息技术有限公司 粤ICP备:05039908
营业执照