怎样来实现流量削峰方案

news2024/10/7 4:22:02

削峰从本质上来说就是更多地延缓用户请求,以及层层过滤用户的访问需求,遵从“最后落地到数据库的请求数要尽量少”的原则。

1.消息队列解决削峰

要对流量进行削峰,最容易想到的解决方案就是用消息队列来缓冲瞬时流量,把同步的直接调用转换成异步的间接推送,中间通过一个队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。

在这里插入图片描述
消息队列中间件主要解决应用耦合,异步消息, 流量削锋等问题。常用消息队列系统:目前在生产环境,使用较多的消息队列有 ActiveMQ、RabbitMQ、 ZeroMQ、Kafka、MetaMQ、RocketMQ 等。

在这里,消息队列就像“水库”一样,拦蓄上游的洪水,削减进入下游河道的洪峰流量,从而达到减免洪水灾害的目的。

2.流量削峰漏斗:层层削峰

针对秒杀场景还有一种方法,就是对请求进行分层过滤,从而过滤掉一些无效的请求。

分层过滤其实就是采用“漏斗”式设计来处理请求的,如下图所示
在这里插入图片描述
这样就像漏斗一样,尽量把数据量和请求量一层一层地过滤和减少了。

1)分层过滤的核心思想

通过在不同的层次尽可能地过滤掉无效请求。
通过CDN过滤掉大量的图片,静态资源的请求。
再通过类似Redis这样的分布式缓存,过滤请求等就是典型的在上游拦截读请求。

2)分层过滤的基本原则

对写数据进行基于时间的合理分片,过滤掉过期的失效请求。
对写请求做限流保护,将超出系统承载能力的请求过滤掉。
涉及到的读数据不做强一致性校验,减少因为一致性校验产生瓶颈的问题。
对写数据进行强一致性校验,只保留最后有效的数据。
最终,让“漏斗”最末端(数据库)的才是有效请求。例如:当用户真实达到订

单和支付的流程,这个是需要数据强一致性的。

总结

1.对于秒杀这样的高并发场景业务,最基本的原则就是将请求拦截在系统上游,降低下游压力。如果不在前端拦截很可能造成数据库(mysql、oracle等)读写锁冲突,甚至导致死锁,最终还有可能出现雪崩等场景。

2.划分好动静资源,静态资源使用CDN进行服务分发。

3.充分利用缓存(redis等):增加QPS,从而加大整个集群的吞吐量。

4.高峰值流量是压垮系统很重要的原因,所以需要Kafka等消息队列在一端承接瞬时的流量洪峰,在另一端平滑地将消息推送出去。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/963466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS地块面积分割调整工具插件

地块分割调整工具可以实现将选定的图斑按照面积比例或者指定的面积,分割成多个图斑。 各个图斑的面积用逗号分隔,比例分割设置时,用整数表示。 面积分割时,最后一个图斑的面积可以不写,插件可以自动计算图斑的面积&a…

1448. 统计二叉树中好节点的数目(javascript)1448. Count Good Nodes in Binary Tree

给你一棵根为 root 的二叉树,请你返回二叉树中好节点的数目。 「好节点」X 定义为:从根到该节点 X 所经过的节点中,没有任何节点的值大于 X 的值。 示例 1: 输入:root [3,1,4,3,null,1,5] 输出:4 解释…

unity面试题(性能优化篇)

CPU 预处理、缓存数据 注释空的unity函数 运算cpu->gpu 减少昂贵计算(开方) 限制帧数 加载(预加载、分帧加载、异步加载、对象池) 慎用可空类型比较 避免频繁计算(分帧、隔帧) 算法优化 变体收集预热 使用clear操作代替容器的new操作 unity spine使用二进制格式…

mac有些软件卸载不了怎么办?正确的Mac软件卸载方法

很多用户Mac用户在整理磁盘空间时发现有很多不常用的软件想要卸载,一顿卸载操作之后发现有些第三方软件是无法完成卸载或成功卸载之后桌面仍保留该软件的图标,在使用Mac过程中遇到有些软件卸载不了怎么办?别着急,小编这就给你支招…

基于指数分布算法优化的BP神经网络(预测应用) - 附代码

基于指数分布算法优化的BP神经网络(预测应用) - 附代码 文章目录 基于指数分布算法优化的BP神经网络(预测应用) - 附代码1.数据介绍2.指数分布优化BP神经网络2.1 BP神经网络参数设置2.2 指数分布算法应用 4.测试结果:5…

2023年淘宝商家成长层级与利好规则

淘宝店铺成长层级越高,对店铺的经营会越好,但有些小伙伴对成长层级和商家利好规则内容的更新变化不太清楚,下面我们就来一起了解一下吧。 一、店铺成长层级 1、入口:店铺层级与权益 2、晋升路径 V1-V2:基础运营&#…

flutter plugins插件【二】【FlutterAssetsGenerator】

2、FlutterAssetsGenerator 介绍地址:https://juejin.cn/post/6898542896274735117 配置assets目录 ​ 插件会从pubspec.yaml文件下读取assets目录,因此要使用本插件,你需要在pubspec.yaml下配置资源目录 flutter:# The following line ens…

A. Increasing and Decreasing

题目:样例: 输入 3 1 4 3 1 3 3 100 200 4输出 1 3 4 -1 100 150 180 200 思路: 思维题,这里我们看一下规律,我们已知a(1),a(n) ,又因为 数列b 应该是递减的,而观察规律可知 &#x…

【云计算•云原生】5.云原生之初识DevOps

文章目录 1.DevOps背景2.DevOps概念3.DevOps工具链 1.DevOps背景 软件开发必须包含两个团队:开发团队和运维团队 开发团队负责开发项目,系统迭代更新运维团队负责项目测试以及部署上线,维持系统稳定运行 一个软件周期中是由这两个团队相互…

【python】—— 函数详解

前言: 本期,我们将要讲解的是有关python中函数的相关知识!!! 目录 (一)函数是什么 (二)语法格式 (三)函数参数 (四)函…

Python项目编译与部署(1):模块与包的概念与关系

当实际构建1个 Python 项目时,模块与包是我们面临的基础概念。 1、模块、包的概念 Python中的模块(Module), 就是一个单独的.py文件,其中包含变量定义,函数定义、类定义、以及其它可执行语句。模块是一个独立的代码单元,可以用解…

安装Tensorboard

打开Pycharm打开Terminal 窗口,输入pip install tensorboard pip install tensorboard

【高阶产品策略】如何从0到1搭建策略产品

文章目录 1、策略概述2、如何从0到1搭建推荐策略产品3、策略产品实施案例4、策略产品经理结构化思考方法 1、策略概述 2、如何从0到1搭建推荐策略产品 3、策略产品实施案例 4、策略产品经理结构化思考方法

【算法竞赛宝典】排名次

【算法竞赛宝典】排名次 题目描述代码展示代码讲解 题目描述 代码展示 //求名次 #include <iostream>using namespace std; #define n 10000 int i, j, mingci; int a[n 1];int main() {int m 0;cin >> m;for (i 1; i < m; i)cin >> a[i];for (i 1; …

HTTP介绍:一文了解什么是HTTP

前言&#xff1a; 在当今数字时代&#xff0c;互联网已经成为人们生活中不可或缺的一部分。无论是浏览网页、发送电子邮件还是在线购物&#xff0c;我们都离不开超文本传输协议&#xff08;HTTP&#xff09;。HTTP作为一种通信协议&#xff0c;扮演着连接客户端和服务器的重要角…

【国漫】小舞生日人气大跌,难以再现辉煌,她还是国漫一姐吗?

Hello,小伙伴们&#xff0c;我是小郑继续为大家深度解析国漫&#xff01; 角色生日的规模&#xff0c;在一定程度可以展现角色的人气和粉丝基础&#xff0c;很多粉丝也会借着角色生日的机会&#xff0c;拼尽全力氪金和筹备&#xff0c;一方面是为了向路人观众展现喜欢角色的魅力…

【业务功能篇93】微服务-springcloud-springboot-认证服务-注册功能-第三方短信验证API

商城认证服务 一、搭建认证服务环境 结合我们前面介绍的商城的架构我们需要单独的搭建一个认证服务。 1.创建项目 首先创建一个SpringBoot项目&#xff0c;然后添加对应的依赖 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"htt…

勃艮第葡萄酒是如何分级的?

勃艮第葡萄酒来自一个同名的地区:勃艮第&#xff0c;它位于法国中东部&#xff0c;在西部的卢瓦尔河和东部的索恩河之间。该地区最大的城市是欧塞尔、第戎、马孔和内韦尔。由于地处国家中心&#xff0c;勃艮第属于大陆性气候&#xff0c;夏季炎热&#xff0c;冬季寒冷。这种气候…

Mac不想用iTerm2了怎么办

这东西真是让人又爱又恨&#xff0c;爱的是它的UI还真不错&#xff0c;恨的是它把我的环境给破坏啦&#xff01;让我每次启动终端之后都要重新source激活我的python环境&#xff0c;而且虚拟环境前面没有括号啦&#xff01;这怎么能忍&#xff01;在UI和实用性面前我断然选择实…

3D点云处理:提取指定圆环内的点(附源码)

文章目录 0. 测试效果1. 基本内容2. 代码实现文章目录:3D视觉个人学习目录微信:dhlddxB站: Non-Stop_目标:提取指定范围的点云0. 测试效果 红色为根据指定条件提取的点 1. 基本内容 要提取指定圆环内和指定高度范围内的点云,可以按照以下步骤进行操作: 定义圆环和高度参数…