进程内缓存是指缓存和应用程序在相同地址空间。即同一个进程内。分布式缓存是指缓存和应用程序位于不同进程的缓存,通常部署在不同服务器上。
从前有个机构,机构的主人叫做 CPU,这个机构专门派仆人取一些东西然后做相应的处理。下面是这个机构日常的场景。
CPU:赶紧去我的仓库L1缓存取点东西 仆人:主人你要的东西,那里离我们最近,所以很快,但是空间比较小。 CPU:你丫还挺快,只用了大约一秒 CPU:赶紧去仓库 L2缓存取点东西 仆人:主人你要的东西,那里离我们也很近,比L1缓存远一点,但是也很快,空间比较小,但是比L1缓存的空间大。
CPU:速度还可以,大约20秒就回来了
CPU:街上有一个地方叫内存,赶紧去取点东西
仆人:主人你要的东西,内存这个地方空间很大呀,就是稍微远了点
CPU:居然用了5分钟,等你这段时间我都刷了好几个段子了
CPU:有一个叫做磁盘的小镇,赶紧去取点东西
仆人:主人你要的东西,磁盘这个地方空间太大呀,取点东西很慢呀
CPU:居然用了5天,等你这段时间我都能报团来一个周边游了
CPU:有一个叫做互联网的国度,赶紧去取点东西
仆人:主人你要的东西,互联网太远了,取点东西太费劲了
CPU:居然用了15天,等你去互联网取东西,简直就是在浪费我的生命
当我做完一个委托人的任务,切换到另外一个委托人的任务时候,我需要把上一个委托人的一些信息先记录下来,然后还需要把新委托人的信息读取一遍,这个过程我是很耗时的,大约需要一个小时呢
以上故事纯属预估数据,真实数据会根据不同的硬件配置和网络环境有误差。
在应对高并发的情况下,如果有适当的环境菜菜还是觉得进程内缓存为首选,另外一点程序要尽量避免线程切换,尽量异步化。如果可以最好能预估出缓存数据的大小,避免内存泄漏等现象发生。
当然分布式缓存有自己的优势,在监控,容灾,扩展性,易用性等方面更胜一筹。至于用进程内还是分布式缓存,没有定论,能解决业务痛点就是最好的结果
程序如果要想最大程度的提升并发量,缩短响应时间, 就把用户需要的数据放在离用户最近的地方
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。