互联网科技码出未来Java

高并发下为什么更喜欢进程内缓存

2019-06-28  本文已影响2人  码上搞定

进程内缓存是指缓存和应用程序在相同地址空间。即同一个进程内。分布式缓存是指缓存和应用程序位于不同进程的缓存,通常部署在不同服务器上。

从前有个机构,机构的主人叫做 CPU,这个机构专门派仆人取一些东西然后做相应的处理。下面是这个机构日常的场景。

CPU:赶紧去我的仓库L1缓存取点东西
仆人:主人你要的东西,那里离我们最近,所以很快,但是空间比较小。
CPU:你丫还挺快,只用了大约一秒
CPU:赶紧去仓库 L2缓存取点东西
仆人:主人你要的东西,那里离我们也很近,比L1缓存远一点,但是也很快,空间比较小,但是比L1缓存的空间大。
CPU:速度还可以,大约20秒就回来了
CPU:街上有一个地方叫内存,赶紧去取点东西
仆人:主人你要的东西,内存这个地方空间很大呀,就是稍微远了点
CPU:居然用了5分钟,等你这段时间我都刷了好几个段子了
CPU:有一个叫做磁盘的小镇,赶紧去取点东西
仆人:主人你要的东西,磁盘这个地方空间太大呀,取点东西很慢呀
CPU:居然用了5天,等你这段时间我都能报团来一个周边游了
CPU:有一个叫做互联网的国度,赶紧去取点东西
仆人:主人你要的东西,互联网太远了,取点东西太费劲了
CPU:居然用了15天,等你去互联网取东西,简直就是在浪费我的生命

当我做完一个委托人的任务,切换到另外一个委托人的任务时候,我需要把上一个委托人的一些信息先记录下来,然后还需要把新委托人的信息读取一遍,这个过程我是很耗时的,大约需要一个小时呢

以上故事纯属预估数据,真实数据会根据不同的硬件配置和网络环境有误差。

通过以上不正经的小故事,我们可以了解到cpu取各个设备数据的大体差距。至于YY妹子的问题,大家也应该了解了。
至于什么情况下适合应用进程内缓存,我觉得有几点需要注意:
相对于分布式缓存,比如Redis,进程内缓存有哪些优势呢?

在应对高并发的情况下,如果有适当的环境菜菜还是觉得进程内缓存为首选,另外一点程序要尽量避免线程切换,尽量异步化。如果可以最好能预估出缓存数据的大小,避免内存泄漏等现象发生。

当然分布式缓存有自己的优势,在监控,容灾,扩展性,易用性等方面更胜一筹。至于用进程内还是分布式缓存,没有定论,能解决业务痛点就是最好的结果

写在最后

程序如果要想最大程度的提升并发量,缩短响应时间, 就把用户需要的数据放在离用户最近的地方

上一篇下一篇

猜你喜欢

热点阅读