13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

系统性能提升优先法宝|缓存应用实践

缓存是系统性能提升优先法宝,在互联网应用系统中,屡试不爽。网上有很多资料介绍缓存理论及使用策略,本文就不再涉及了,今天简单将缓存做个归类,重点分享以前在实际业务中碰到场景以及如何使用。

我们提供的服务有:网站建设、成都做网站、微信公众号开发、网站优化、网站认证、新津县ssl等。为上千多家企事业单位解决了网站和推广的问题。提供周到的售前咨询和贴心的售后服务,是有科学管理、有技术的新津县网站制作公司

接下来主要分两部分介绍:缓存分类与应用实践案例。

缓存分类

缓存一般有以下几类:客户端、浏览器、CDN缓存、NGINX缓存、应用缓存及统一缓存(如redis)。

缓存分类:用户->数据层

前四类都是在网络传输中进行数据缓存,一般研发很少会去使用,后两类在应用中缓存,在开发中经常使用,接下来介绍后两类缓存的实践案例。

实践案例

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) 类目中心--读

数据更新请求,有一定的规则:

(2) 类目中心--更新

客户端95%的请求被客户端缓存***,调用次数3700万/分钟,性能TP999为1ms。

(3) 客户端调用次数

(4) 客户端性能

服务端请求次数3000万/分钟也没有压力,单实例现实际调用次数150万/分钟。

(5) 服务端调用次数

***

如何使用,怎么组合,缓存什么数据,都需要结合业务场景,也需要一步步观察、总结才能优化。

【本文来自专栏作者张开涛的微信公众号(开涛的博客),公众号id: kaitao-1234567】

戳这里,看该作者更多好文


分享标题:系统性能提升优先法宝|缓存应用实践
当前路径:http://cdbrznjsb.com/article/dhjhdsd.html

其他资讯

让你的专属顾问为你服务