首页 > 其他分享 >前置缓存解决热点数据

前置缓存解决热点数据

时间:2023-03-07 18:01:19浏览次数:39  
标签:缓存 前置 QPS 热点 节点 百万

全量缓存抗住秒级百万的 QPS 毫无压力

 

 

 

“百万 QPS”有一个非常重要的限制条件,即这百万的 QPS 都是分属于不同用户的

当百万的 QPS 属于不同用户时,因缓存是集群化的,所有到达业务后台的请求会根据一定路由规则(如 Hash),分散到请求缓存集群中的某一个节点

假设一个节点最大能够支撑 10W QPS,我们只需要在集群中部署 10 台节点即可支持百万流量。但当百万 QPS 都属于同一用户时,即使缓存是集群化的,同一个用户的请求都会被路由至集群中的某一个节点

即使此节点的机器配置非常好,当前能够支持住百万 QPS

此类并发次数非常大、数据完全相同的请求称为热点查询。

微博热点吃瓜事件

电商里的秒杀或者低价薅羊毛活动

主从复制进行垂直扩容

虽然单机的机器配置和程序的性能是有上限的,但我们可以利用节点间的主从复制功能来进行节点间的扩容。

 

主从复制能够解决一定流量的热点查询且实施起来较简单。但不具备扩展性,在应对更大流量的热点时会有些吃力。

利用应用内的前置缓存

 

首先是应用内缓存需要设置上限

最后如何发现热点缓存并前置

 

 

降级兜底不可少

部署的机器能够支持的 QPS 未必都能够大于当次的热点查询。对于可能出现的超预期流量,可以使用前置限流的策略进行应对

 

标签:缓存,前置,QPS,热点,节点,百万
From: https://www.cnblogs.com/jiaozg/p/17188979.html

相关文章

  • 通用缓存存储方案设计
    目录介绍01.整体概述说明1.1项目背景介绍1.2遇到问题记录1.3基础概念介绍1.4设计目标1.5产生收益分析02.市面存储方案2.1缓存存储有哪些2.2缓存策略有哪些2.3常见......
  • redis缓存雪崩、击穿、穿透
    用户的数据一般都是存储于数据库,数据库的数据是落在磁盘上的,磁盘的读写速度可以说是计算机里最慢的硬件了。当用户的请求,都访问数据库的话,请求数量一上来,数据库很容易就奔......
  • Caffeine高性能本地缓存框架初探
    通常情况下,为了提升服务性能,使用缓存框架是一个非常常见的选择。在Java语境下,经过我查阅,Caffeine被称作地标最强Java本地缓存框架。Caffeine是站在巨人(GuavaCache)的肩膀上,......
  • discuz关闭缓存
    修改 function_core.php文件vimdiscuz_x3.2/upload/source/function/function_core.php代码如下,添加红色字体functionchecktplrefresh($maintpl,$subtpl,$timecompar......
  • 浏览器数据库indexeddb-数据库缓存
    随着浏览器的功能不断增强,越来越多的网站开始考虑,将大量数据储存在客户端,这样可以减少从服务器获取数据,直接从本地获取数据。现有的浏览器数据储存方案,都不适合储存大量数......
  • 上周热点回顾(2.27-3.5)
    热点随笔:· 一键接入ChatGPT,让你的QQ群变得热闹起来 (极客飞兔)· 我的十年编程路2013年篇 (萧文翰)· 2023年,消失的金三银四 (peida)· 我做的FFmpeg开源C#封装......
  • 开箱即用,你不可错过的好东西「GitHub 热点速览」
    近两周ChatGPT的应用雨后春笋般冒出来,占据了GitHub热榜半个版面,像是本周推荐能搞定一本电子书翻译的bilingual_book_maker,有ChatGPTbuff加成的小爱同学。除了开箱......
  • redis缓存过期策略学习
    转自:http://jinguoxing.github.io/redis/2018/10/10/redis-EXPIRE/https://juejin.cn/post/70589185032559001671.过期字典在redis中维护了一个expires字典,里面保存了数......
  • spring的循环依赖和三级缓存
    一、spring中bean的生命周期回顾要理解spring中的循环依赖问题需要先了解spring中bean的生命周期,spring中创建bean的过程中主要有这几个阶段:实例化前$\rightarrow$实......
  • 07-Redis系列之-双写一致性,缓存详解和优化点
    双写一致性redis和mysql数据同步方案先更新数据库,再更新缓存(一般不用)先删缓存,再更新数据库(在存数据的时候,请求来了,缓存不是最新的,一般也不用)先更新数据库,再删缓存(请求......