您现在的位置是:亿华云 > IT科技类资讯
系统性能提升优先法宝 | 缓存应用实践
亿华云2025-10-03 22:10:30【IT科技类资讯】2人已围观
简介缓存是系统性能提升优先法宝,在互联网应用系统中,屡试不爽。网上有很多资料介绍缓存理论及使用策略,本文就不再涉及了,今天简单将缓存做个归类,重点分享以前在实际业务中碰到场景以及如何使用。接下来主要分两部
缓存是系统性系统性能提升优先法宝,在互联网应用系统中,提升屡试不爽。优先应用网上有很多资料介绍缓存理论及使用策略,法宝本文就不再涉及了,缓存今天简单将缓存做个归类,实践重点分享以前在实际业务中碰到场景以及如何使用。系统性
接下来主要分两部分介绍:缓存分类与应用实践案例。提升
缓存分类
缓存一般有以下几类:客户端、优先应用浏览器、法宝CDN缓存、缓存NGINX缓存、实践应用缓存及统一缓存(如redis)。系统性
缓存分类:用户->数据层
客户端缓存:很少使用,提升一般都是优先应用传统企业才会使用。把不变化或很长时间才变化的数据按一定格式存储在客户端的本地文件中,使用时通过js读取解析使用,延用了C/S结构的方式,适合数据量很大业务且技术有所不足的开发。 浏览器缓存:这种形式使用很广泛,极大地提升了用户体验,但有时会出现没及时更新导致显示“错误”的信息。把已经请求过的Web资源(如html页面,图片,js,css等)拷贝一份副本储存在浏览器中,源码下载缓存会根据进来的请求保存输出内容的副本。这种缓存带来的好处有三点:减少网络带宽消耗,降低服务器压力,减少网络延迟、加快页面打开速度,适合请求量大、静态的数据请求。 CDN缓存:在用户和服务器之间增加cache层,把数据存放到内容分发网络机房服务器中,用户请求进从最近的CDN节点获取。主要缓存图片、js及css文件,CDN需要付费,有些规模的网站才会使用。 NGINX缓存:对客户已经访问过的内容在Nginx服务器本地建立副本,达到减少Nginx服务器与后端服务器之间的网络流量。 应用缓存:在后端应用中使用缓存,如java常使用Ehcache及gauva缓存组件进行数据缓存,也可以针对特殊场景在请求中进行线程缓存。适合调用量大且应用内部方法间调用,减少网络消耗。 统一缓存:使用内存减少对数据库的直接访问,提高网站性能,如使用memcache或redis搭建缓存服务。云南idc服务商前四类都是在网络传输中进行数据缓存,一般研发很少会去使用,后两类在应用中缓存,在开发中经常使用,接下来介绍后两类缓存的实践案例。
实践案例
1. 热点key
场景:在大促期间,给所有活动页及频道页提供侧滑html片段数据,会有修改。
特点:数据记录少,调用量比较大(峰值400万/分钟)。
在接到需求时,***反应是使用redis进行缓存,数据更新时删除redis缓存。读取时先读取redis,缓存为空,读取DB并存放redis。
该场景是使用redis当缓存使用,存在一定风险:由于数据量少并发高时,成为热点key会集中***单个redis实例,流量上去后,性能会变差,甚至可能拖垮实例。
进一步改进本地JVM缓存,加redis缓存,JVM缓存一分种失效,回源redis及数据库。存在集中穿透缓存回源数据库,拖垮应用或数据库的情况,亿华云之前有过缓存失效,集中回源数据库的经历,结果应用服务一台台全部倒下,数据库没有压力。事后分析,数据库配置***连接数为10,外部请求超时时间为500ms,不断有新请求进来,大量请求在等待连接。***选择在JVM使用ConcurrentMap存放当DB使用,1分钟异步刷新数据。
在大促当天,页面该请求返回性能不太理想,数据返回大概73KB,使用Nginx增加gzip压缩后,数据压缩到13KB,性能提高不少。后续在Nginx增加代理缓存,性能稳定。
2. 类目中心设计
类目是电商领域最基础的数据,使用依赖的系统很多,早期是各个系统直接从数据库读取并自行缓存使用,人为给数据库增压。为了避免该情况,着手搭建类目中心,对性能及稳定要求***,类目中心服务异常不能影响使用方,类目更新后要及时同步给使用方。
经过多次讨论,确认使用三级缓存:客户端缓存、类目系统jvm缓存及统一redis缓存。
(1) 类目中心--读
客户端缓存:在对外提供的api依赖包中进行缓存封装,通过调用类目系统接口提供缓存后的服务方法。缓存数据记录失效时间,调用时发现缓存数据已失效时,更新失效时间并返回,异步请求类目中心数据刷新。若缓存没有***,回源请求类目中心。客户端会定时检测类目版本信息,若版本更新变化,客户端数据强制更新。 类目系统jvm缓存:使用jvm缓存,若有过期异步回源,统一缓存redis,穿透直接回源redis。 统一缓存redis:当DB使用,不回源数据库,并定时从数据库把数据刷新至redis中。为了避免并发刷新,使用redis实现排它锁,保证只一个任务刷新。数据更新请求,有一定的规则:
更新数据库,保证数据库是正确数据,后续步骤异常也可通过定时全量更新弥补; 更新redis缓存; 更新类目中心所有实例JVM缓存:由于系统是多实例集群,需要通知所有实例更新JVM缓存; 更新版本号,用于客户端查验强制更新标识。一定需要JVM更新完成之后,否则客户端可能获取到更新前的“错误”数据。(2) 类目中心--更新
客户端95%的请求被客户端缓存***,调用次数3700万/分钟,性能TP999为1ms。
(3) 客户端调用次数
(4) 客户端性能
服务端请求次数3000万/分钟也没有压力,单实例现实际调用次数150万/分钟。
(5) 服务端调用次数
***
缓存不仅能当缓存,也可以当DB使用,避免穿透 数据的更新分主动缓存及被动缓存 需要解决数据的一致性及有效性如何使用,怎么组合,缓存什么数据,都需要结合业务场景,也需要一步步观察、总结才能优化。
【本文来自专栏作者张开涛的微信公众号(开涛的博客),公众号id: kaitao-1234567】
戳这里,看该作者更多好文
很赞哦!(3)
上一篇: 4、选择一个安全的域名注册商进行域名注册
下一篇: 4、club娱乐
相关文章
- 前面这两个步骤都是在本机完成的。到这里还没有涉及真正的域名解析服务器,如果在本机中仍然无法完成域名的解析,就会真正请求域名服务器来解析这个域名了。
- 用户邮箱的静态密码可能已被钓鱼和同一密码泄露。在没有收到安全警报的情况下,用户在适当的时间内不能更改密码。在此期间,攻击者可以随意输入帐户。启用辅助身份验证后,如果攻击者无法获取移动电话动态密码,他将无法进行身份验证。这样,除非用户的电子邮件密码和手机同时被盗,否则攻击者很难破解用户的邮箱。
- 5. 四种状态过后,域名管理机构释放域名给公众注册。
- 5. 四种状态过后,域名管理机构释放域名给公众注册。
- 以上的就是为大家介绍的关于域名的详解
- 3、考虑出售域名
- 这个不用多说,不同平台的注册价格不同,且不同平台对域名释放交易的把控与曝光不同,当然价格相对便宜且平台渠道广操作便利的平台最好。
- (4) 使用何种形式的域名后缀对网页搜索影响不大,但域名后缀也需要考虑方便用户记忆
- a、变更前的公司证件扫描件(代码证或者营业执照)及联系人身份证复印件、变更后的公司证件扫描件(代码证或者营业执照)及新的联系人身份证复印件;身份证复印件需本人签名,公司证件复印件需加盖公章。
- 为啥修改dns服务器?dns服务器与域名有何联系?
热门文章
站长推荐
为什么大家都选优质域名?到底存在着什么好处?
众所周知,com域名拥有最大的流通市场和流通历史。最好选择com域名,特别是在购买域名时处理域名。其次可以是cn域名、net域名、org域名等主流域名,现在比较流行的王域名和顶级域名,都是值得注册和投资的。
互联网其实拼的也是人脉,域名投资也是一个时效性很强的东西,一个不起眼的消息就会引起整个域名投资市场的动荡,因此拓宽自己的人脉圈,完善自己的信息获取渠道,让自己能够掌握更为多样化的信息,这样才更有助于自己的域名投资。
5. 四种状态过后,域名管理机构释放域名给公众注册。
当投资者经过第二阶段的认真学习之后又充满了信心,认为自己可以在市场上叱咤风云地大干一场了。但没想到“看花容易绣花难”,由于对理论知识不会灵活运用.从而失去灵活应变的本能,就经常会出现小赢大亏的局面,结果往往仍以失败告终。这使投资者很是困惑和痛苦,不知该如何办,甚至开始怀疑这个市场是不是不适合自己。在这种情况下,有的人选择了放弃,但有的意志坚定者则决定做最后的尝试。
在此期间,他们每天仍在这里卖大米,在理财方面个人感情有待提高。因为现在是收米的最佳时机。
比较短的域名方便用户记忆和传播,它带来的好处往往会超过其他类型的域名,如果你非要域名短而且还要包含关键词,那么往往会事与愿违,现在这种域名基本上是可遇而不可求的。
注册域名要了解几大点?新手有什么方式注册域名?