`
omygege
  • 浏览: 1423276 次
文章分类
社区版块
存档分类
最新评论

Local Cache的小TIP

 
阅读更多

今天组里的同学和我谈起local cache的一点需求,希望考虑在性能和业务上找到平衡点应该怎么考虑实现。下午给他的意见可能还是有点问题,回家稍微整理了一下,说出来也可以激发大家的讨论,觉得现在local cache + 远端cache是提高性能的必备,所以如何做好local cache 很有讲究。

由于有网络传输带来的性能损失(包括连接数并发限制),很多大请求量系统都会考虑做部分本地缓存。但本地缓存最大的问题就是数据同步,如果让集中式存储(cache,queue)来通知只会增加复杂度,因此通常最简单的方式就是根据业务数据的敏感度设置不同长短的本地失效时间。但现在如果要设置一个较短的有效期(例如一秒),对于计算机来说已经大大的减轻了压力(1秒对程序来说太久了),但是整体本地缓存对后端保护的效果不佳(特别是后端如果是并发处理能力较弱的系统),如果遇到并发量大的系统,那么就更为突出了。

早先有想过通过锁来保证请求不会全部放过去(失效时就一个请求过去更新,其他请求等待),一来是针对内容作锁,对锁的需求量很大(当业务数据很多时),二来如果采用其他请求阻塞(对于系统来说压力也很大),这点后来谈起可以直接返回老数据而不等待。但总体看起来消耗依然很大。

因此给了下图:

首先开始的时候会有部分数据被推送到本地缓存(当然也可以是客户端主动获取全部数据),也可以全部采用lazy加载,推送来的数据缓存在本地,并且设置失效时间,为每一个key还会有一份失效时间Map用于检查是否失效。应用发起get的请求,先从本地拿,如果有数据且有效,就直接返回。如果没有命中,则去远端获取资源,并缓存在本地,最后返回给应用(这里如果要防攻击可以采用布隆算法建立白名单)。如果发现本地数据失效,则将失效事件放入到一个本地的EventMap中,key为当前请求数据的key,然后设置这个key的时间为当前时间+有效间隔时间(不做并发控制,多次放入EventMap会被覆盖,多次设置时间有效期还是当前时间+间隔时间),后续请求就会认为这个数据是有效的不会连续请求更新,然后返回老数据。后台分发线程检查消息Map,将事件分发到后台线程池异步执行,最后更新结果并设置有效时间。

最后还有一个后台清理线程将过老的数据从缓存中移除,在map满或者到了清理间隔的时候去执行。

这种设计有一定的复杂度,但是还算是松耦合,在并发高的情况下,牺牲数据较小的即时性换取对后端的保护。不过如果没有必要,做的简单粗暴一点即可,不需要那么复杂。同时如果有更好的意见和建议的同学请回帖讨论,或者去我的微薄讨论:t.sina.com.cn/fangweng
分享到:
评论

相关推荐

    微软内部资料-SQL性能优化2

    The Windows 2000 cache manager provides data caching for both local and network file system drivers. By caching virtual blocks, the cache manager can reduce disk I/O and provide intelligent read ahead...

    注册表修改大全(作者:Sunny)

    HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\Network分支,在右窗格内新建一个DWORD值为“AlphanumPwds”,修改“AlphanumPwds”键值,在出现的对话框中的“键值”框内输入1。...

    Bloodshed Dev-C++

    * Under NT, 2000 and XP, user application data directory will be used to store config files (i.e : C:\Documents and Settings\Username\Local Settings\Application Data) Version 4.9.5.3 * Added ...

    MATLAB中的紧束缚模型求解器.rar

    1.版本:matlab2014/2019a/2024a 2.附赠案例数据可直接运行matlab程序。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。

    模型量化校准数据集-ImageNet2012分类图片100张

    从ImageNet2012分类数据集中选取的100张图片,用于对常见分类模型进行量化。 数据集介绍 数据背景: 静态离线量化方法需要少量校准数据,这个数据集用于量化演示示例。 数据来源: 基于Imagenet2012测试数据集,取前100张图片和标签作为本数据集。

    ### 【计算机组成原理】计算机发展历程与关键技术解析:从冯·诺依曼架构到量子计算的未来展望

    内容概要:本文详细介绍了计算机的发展历程及其核心组成部分,从早期计算工具的演进到现代计算机的诞生,重点探讨了冯·诺依曼体系结构的重要性。文章回顾了从机械计算器、ENIAC到微处理器的科技进步,阐述了计算机五大组成部分(运算器、控制器、存储器、输入设备、输出设备)的功能与协作机制。同时,文中还讨论了操作系统、编程语言、数据库管理系统等软件层面的内容,以及量子计算和神经形态计算等前沿技术对未来计算机发展的影响。; 适合人群:计算机专业学生、计算机爱好者及对计算机技术感兴趣的读者。; 使用场景及目标:①帮助读者理解计算机硬件的基本组成和工作原理;②解释软件与硬件之间的协同关系;③介绍量子计算和神经形态计算等新兴技术的发展趋势及挑战。; 其他说明:掌握计算机组成原理有助于读者深入了解计算机系统的工作机制,培养硬件思维和系统思维,为后续学习操作系统、编译原理、计算机网络等课程打下坚实基础。同时,对于广大计算机爱好者而言,了解计算机组成原理可以让他们更好地理解计算机的运行机制,在使用计算机的过程中更加得心应手。

    中国移动2024年6G通感算智融合技术体系白皮书1.053页.pdf

    中国移动2024年6G通感算智融合技术体系白皮书1.053页.pdf

    汽车电子:MATLAB_开发电池管理系统SOC估算算法.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!

    通信工程分包合同.docx

    通信工程分包合同.docx

    基于Qt+C++实现的物联网景区地质灾害监测系统+源码+项目文档(毕业设计&课程设计&项目开发)

    基于Qt+C++实现的物联网景区地质灾害监测系统+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 本项目利用Zigbee协议搭建了专属物联网,搭建了以Cortex-A8为主核的本地网关,租用阿里云组建系统服务器,并建立了相关网站。监测中心站通过客户端监控易发灾害点数据,在灾害爆发前做好预防工作;普通用户可以通过网站查看各项数据。 基于Qt+C++实现的物联网景区地质灾害监测系统+源码+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 本项目利用Zigbee协议搭建了专属物联网,搭建了以Cortex-A8为主核的本地网关,租用阿里云组建系统服务器,并建立了相关网站。监测中心站通过客户端监控易发灾害点数据,在灾害爆发前做好预防工作;普通用户可以通过网站查看各项数据

    CNC-控制器-STM32-开源项目

    CNC_控制器_STM32_开源项目

    世邦魏理仕:2022年北京房地产市场回顾与2023年展望.pdf

    世邦魏理仕:2022年北京房地产市场回顾与2023年展望

    科学发展观与建筑企业管理论文.docx

    科学发展观与建筑企业管理论文.docx

    Epson-L130-Series

    爱普生L130

    基于javaScript+Springboot+Vue实现的校园社团信息管理系统+源码+演示视频+项目文档(毕业设计&课程设计&项目开发)

    基于javaScript+Springboot+Vue实现的校园社团信息管理系统+源码+演示视频+项目文档,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 园社团信息管理系统管理员功能有个人中心,学生管理,社长管理,社团分类管理,社团信息管理,加入社团管理,社团成员管理,社团活动管理,活动报名管理,系统管理等。社长添加社团,管理员审核社团,学生加入社团,社长审核社团。因而具有一定的实用性。 本站是一个B/S模式系统,采用Spring Boot框架,MYSQL数据库设计开发,充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得校园社团信息管理系统管理工作系统化、规范化。本系统的使用使管理人员从繁重的工作中解脱出来,实现无纸化办公,能够有效的提高校园社团信息管理系统管理效率。

    apk文件.zip

    apk文件

    JDK1.7及之前HashMap的put方法图解.png

    JDK1.7及之前HashMap的put方法图解

    珠宝鉴定:MATLAB高光谱成像在宝石内部包裹体分析中的实践.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!

    基于MATLAB_的无人机编队协同控制算法开发与半实物仿真.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 你是否渴望高效解决复杂的数学计算、数据分析难题?MATLAB 就是你的得力助手!作为一款强大的技术计算软件,MATLAB 集数值分析、矩阵运算、信号处理等多功能于一身,广泛应用于工程、科学研究等众多领域。 其简洁直观的编程环境,让代码编写如同行云流水。丰富的函数库和工具箱,为你节省大量时间和精力。无论是新手入门,还是资深专家,都能借助 MATLAB 挖掘数据背后的价值,创新科技成果。别再犹豫,拥抱 MATLAB,开启你的科技探索之旅!

Global site tag (gtag.js) - Google Analytics