消峰限流有哪几种方式?

news2024/12/23 19:06:06

消峰限流的方式

  1. 业务视角
    1. 验证码
    2. 回答问题环节
  2. 技术视角
    1. 消息队列异步化用户请求

      在这里插入图片描述

    2. 限流,对流量进行层层过滤

      1. nginx 层限流,
        1. 一是控制速率 limit_req 漏桶算法

          limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
          server { 
              location / { 
                  limit_req zone=mylimit;
              }
          }
          **-------------------------------------------------------------**
          **以上配置表示,限制每个 IP 访问的速度为 2r/s**
          limit_req_zone $binary_remote_addr zone=mylimit:10m rate=2r/s;
          server { 
              location / { 
                  limit_req zone=mylimit **burst**=4;
              }
          }
          
          burst=4 表示每个 IP 最多允许4个突发请求,如果单个 IP 在 10ms 内发送 6 次请求
          会有 1 个请求被立即处理了,4 个请求被放到 burst 队列里排队执行了,
          另外 1 个请求被拒绝了。
          **--------------------------------------------------------------**
          limit_req_zone $userId zone=mylimit:10m rate=2r/s;
          server { 
              location / { 
                  limit_req zone=mylimit;
              }
          }
          **基于用户ID的限流**
          
        2. 二是控制并发连接数 limit_conn_zone limit_conn

          limit_conn_zone $binary_remote_addr zone=perip:10m;
          limit_conn_zone $server_name zone=perserver:10m;
          server {
              ...
              limit_conn perip 10;
              limit_conn perserver 100;
          }
          其中 limit_conn perip 10 表示限制单个 IP 同时最多能持有 10 个连接;
          limit_conn perserver 100 表示 server 同时能处理并发连接的总数为 100
        3. ngx_http_upstream_module

      2. 服务端限流
        1. 常用的限流算法
          1. 时间窗口算法
          2. 漏桶算法
          3. 令牌算法
      3. 技术实现
        1. Nginx
        2. guava RateLimiter
        3. tomcat limitlatch
        4. Sentinel & Hystrix
      4. 方案
        1. 同一用户限流,根据UserID限流
        2. 某个IP进行限流
        3. 接口进行限流

      限流是一种有损的技术消峰;验证码、回答问题以及异步化消息队列是无损技术消峰


    延伸阅读
    • 设计模式——责任链模式
    • 如何设计 API: 基本指南 + 最佳实践
    • 金融行业业务流程指南-三级模型

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

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

相关文章

Java面试题——第八篇(JVM)

1. JVM中有哪些垃圾回收算法 Java中的垃圾回收算法有以下几种 1. 标记-清除算法 工作原理:首先遍历堆中的对象,标记出所有存活的对象,接着清除未标记的对象。优点:实现简单,能够处理堆中的所有对象缺点:…

vue3 antd-design-vue3 日期组件语言不显示中文问题

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、修改步骤 前言 随着ant-design-vue v3的推出,ant-design-vue官方把时间组件中的momentjs 替换成了dayjs,升级完后发现日期显示不正…

swift使用internvl2微调ocr文字检测(目标检测)

详细记录swfit微调interVL2-8B多模态大模型进行目标检测(附代码)-CSDN博客文章浏览阅读2k次,点赞45次,收藏14次。目标检测任务已经不是一个新鲜事了,但是多模态大模型作目标检测任务并不多见,本文详细记录swfit微调interVL2-8B多模态大模型进行目标检测的过程,旨在让更多…

Linux驱动开发(速记版)--单总线

第124章 单总线简介 124.1 单总线概述 单总线是一种串行通信协议,由Dallas Semiconductor开发,特点是用一根信号线实现双向数据传输和时钟同步,节省IO口且结构简单。 它广泛应用于传感器、存储器等。 硬件包括信号线、上拉电阻、设备和处理器…

代码随想录--字符串--重复的子字符串

题目 给定一个非空的字符串,判断它是否可以由它的一个子串重复多次构成。给定的字符串只含有小写英文字母,并且长度不超过10000。 示例 1: 输入: "abab" 输出: True 解释: 可由子字符串 "ab" 重复两次构成。示例 2: 输入: "…

javaweb - 请求响应代码实现

简单参数 原始方式 在原始的web程序中,获取请求参数,需要通过HttpServletRequest对象手动获取。 RequestMapping("/simpleParam")public String simpleParam(HttpServletRequest request) {String name request.getParameter("name&…

基于Springboot+Vue的养老院管理系统的设计与实现 (含源码数据库)

1.开发环境 开发系统:Windows10/11 架构模式:MVC/前后端分离 JDK版本: Java JDK1.8 开发工具:IDEA 数据库版本: mysql5.7或8.0 数据库可视化工具: navicat 服务器: SpringBoot自带 apache tomcat 主要技术: Java,Springboot,mybatis,mysql,vue 2.视频演示地址 3.功能 这个系…

TMC2209堵转检测配置详细教程

按如下图将TMC2209和串口模块连接: 配置流程: 寄存器配置: 通用寄存器: 校验码见我之前文章:使用uart串口配置TMC2209模块_tmc2209 uart-CSDN博客 通用寄存器主要是配置第0和第1位,第1位要给1&#xff0…

python之详解列表

有序的可变容器,可以存储不同类型的元素。用中括号[]表示。 1、列表的查找访问 1.1、通过下标查找。 与字符串类似,列表也可通过 列表名[index] 的方式查找其中的元素。 索引的初始值为0,最大值为列表长度-1。 示例: list1 …

刷题 位运算 / 数学

面试经典 150 题 - 位运算 ⭐️⭐️67. 二进制求和 加法进位 class Solution { public:string addBinary(string a, string b) {int na a.size(), nb b.size();string ans;ans.reserve(max(na, nb) 1); // 预留空间,避免动态扩展时的性能损耗int carry 0;for …

platform bus平台总线详解

往期内容 驱动中的device和device_driver结构体-CSDN博客bus总线的相关结构体和注册逻辑-CSDN博客bus中设备驱动的probe触发逻辑和device、driver的添加逻辑-CSDN博客 前言 注:以下的代码皆摘自于linux 4.9.88版本的内核源码,不同版本可能有所出入。 之…

【EXCEL数据处理】保姆级教程 000016案例 EXCEL的vlookup函数。

【EXCEL数据处理】000016案例 vlookup函数。 前言:哈喽,大家好,今天给大家分享一篇文章!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 【EXCEL数据处理】保姆级教…

【动态规划】斐波那契模型 dp

动态规划的步骤: 状态表示。所谓状态表示就是 dp 表里的值表示什么含义,那么状态表示怎么找呢? a. 题目要求 b. 经验(以某一个位置为结尾 / 起点) 题目要求 c. 分析问题的过程中发现重复子问题状态转移方程。dp[ i ] …

ChatGPT Canvas:系统提示词泄漏了~

OpenAI 推出了一款叫做 Canvas 的新工具,用来帮助用户更好地与 ChatGPT 协作写作和编程。详细介绍可以看这篇文章:ChatGPT Canvas:交互式对话编辑器-CSDN博客​编辑 以下是 OpenAI 新功能 “Canvas” 的系统提示内容 你是 ChatGPT&#xff0…

基于连续小波变换(CWT)批量生成一维信号的时频图 最终生成30张时频图。生成的图像可用于后续的深度学习分类或其他处理。附详细的说明文档。

Matlab基于连续小波变换(CWT),将一维信号批量生成时频图的源代码。此示例中,原始信号data是30*1280的格式,一共30条信号,信号长度为1280。最终生成30张时频图。生成的图像可用于后续的深度学习分类或其他处…

SpringBoot开发——SpringSecurity安全框架17个业务场景案例(二)

文章目录 一、Spring Security 常用应用场景介绍二、Spring Security场景案例6、CSRF 保护(CSRF Protection)6.1 Spring Security 配置6.2 业务逻辑代码7、密码编码(Password Encoding)7.1 Spring Security 配置7.2 业务逻辑代码7.3 控制器8、方法级安全性(Method Securit…

Vue2电商项目(八) 完结撒花:图片懒加载、路由懒加载、打包的map文件

一、图片懒加载 安装:npm i vue-lazyload1.3 -s (弹幕建议按1.3版本) 引入 // 引入懒加载的图片 import hlw from /assets/hulu.jpg // 引入插件 import VueLazyload from vue-lazyload // 引入插件 Vue.use(VueLazyload, {// 懒加载默认的图…

Oracle登录报错-ORA-01017: invalid username/password;logon denied

接上文:Oracle创建用户报错-ORA-65096: invalid common user or role name 我以为 按照上文在PDB里创建了用户,我以为就可以用PLSQL远程连接了,远程服务器上也安装了对应版本的Oracle客户端,但是我想多了,客户只是新建…

【爬虫】网站反debugger、内存爆破以及网站限制开发者工具

【爬虫】网站反debugger、内存爆破以及网站直接限制开发者工具 声明:本文中所有内容仅供学习交流使用,不用于其他任何目的,不提供完整代码,敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途&#xff0…

JWT集成Keycloak

一、直接使用现有域账号、密码获取token方式 1.KeyClack 使用现有配置 Client id : account-console 2.服务配置文件配置 3.API接口配置 4. 获取token 5.调用方式(Swagger)(代码方式直接在请求头加上token) 5.1 配置在Swagger访问 5.2 访问需要认证的接…