【一图学技术】7.削峰与限流防刷技术解决方案及限流算法图解

news2025/1/21 5:58:09

在这里插入图片描述

削峰与限流防刷技术

一、削峰技术

解决问题解决流量大的问题,限制单机流量

🚀核心技术

  • 秒杀令牌:颁发给用户令牌,给予操作特权

  • 秒杀大闸:限制令牌数量

  • 队列泄洪:队列增加缓冲能力,多线程处理

🌏解决方案

在这里插入图片描述

  • 1.在验证前,加验证码(使用easy capcha)平滑流量1-N(来减缓用户操作速度);
  • 2.验证后颁发令牌,通过大闸(使用Redis(promition:gate:161 数量*10))限制令牌数量,来适量放入访问量。
  • 3.当令牌量大的情况,引入限流器(限制单机TPS)(使用guava(RateLimiter));
  • 4.若此时数据量仍大,依然对服务器有压力,就加入队列(ThreadPool)增加服务器缓冲能力,降低负载压力。

二、限流算法

解决问题访问量过大,实际访问远远大于资源数,造成访问冗余,为了接收合适的访问量或者限制单机的TPS(request/s)

🚀核心技术

  • 验证码(easy capcha)
  • 令牌桶和漏桶算法

🌏解决方案

固定窗口计数器、滑动窗口计数器、漏桶和令牌桶是网络流量控制和速率限制中常见的几种算法。

  1. 固定窗口计数器

    • 概念:固定窗口计数器是一种简单的速率限制算法,它使用一个固定大小的时间窗口来限制请求的数量。

    • 原理:在固定的时间窗口内(比如1秒),只允许一定数量的请求通过。一旦达到这个数量,任何额外的请求都会被拒绝,直到窗口重置。

    • 使用场景:适用于简单场景,不需要平滑的速率控制,例如简单的API速率限制。

在这里插入图片描述

  1. 滑动窗口计数器

    • 概念:滑动窗口计数器是对固定窗口计数器的改进,它允许更平滑的速率控制

    • 原理:滑动窗口不是固定大小,而是随着时间滑动。在任何给定时间点,窗口内的请求数量都会被计算,如果超过限制则拒绝新请求。

    • 使用场景:适用于需要平滑控制请求速率的场景,例如在线服务的API调用。

在这里插入图片描述

  1. 漏桶(Leaky Bucket)

    • 概念:漏桶算法是一种流量整形技术,用于平滑突发流量

    • 原理:想象一个桶,水(代表数据包或请求)以任意速率流入,但以固定速率流出。即使流入速率很高,流出速率是固定的,因此可以平滑流量。

    • 使用场景:适用于需要平滑突发流量的场景,如网络数据传输、音频/视频流等。
      在这里插入图片描述

      • 图片解释(1)限流器初始化漏桶有n滴水,每秒向业务组件漏出x滴水
        (2)请求到限流器,限流器就给漏桶加水,注水时水满则溢,漏桶依旧每秒给业务组件x滴水也就是处理x个请求。
  2. 令牌桶(Token Bucket)

    • 概念:令牌桶算法是一种更灵活的流量整形和速率限制技术。

    • 原理:系统中存在一个令牌桶,以固定速率填充令牌。每个请求需要从桶中取出一个令牌才能被处理。如果桶空了,请求可以等待或被拒绝。

    • 使用场景:适用于需要允许一定突发流量的场景,同时保持平均速率限制,例如网络带宽管理、API速率限制等。
      在这里插入图片描述

      • 图片解释(1)限流器初始化时,初始化令牌桶x个令牌(未满),令牌桶实际可以存n个令牌,令牌生成器每秒添加y个令牌,桶满则弃多余令牌;
        (2)请求问限流器有令牌给我,就取出一个令牌,没令牌就不访问了

每种算法都有其适用的场景,选择哪一种取决于具体的应用需求和期望的流量控制效果。

三、防刷技术

解决问题防黄牛,恶意反复刷,抢走优惠力度好的 或者 让其他用户进不来

🌏解决方案
在这里插入图片描述

1.传统防刷技术

限制同一用户N秒内访问次数(存在问题:黄牛有多个账户)
限制同一IP地址N秒内访问次数(存在问题:一个单位共用IP被误杀)

2.采集设备指纹并下发凭证
​ 手机终端采集设备指纹 (模拟器/设备牧场):

​ 正常—> 颁发凭证
​ 可疑—> 发起验证

私信取图!

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

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

相关文章

4_损失函数和优化器

教学视频:损失函数与反向传播_哔哩哔哩_bilibili 损失函数(Loss Function) 损失函数是衡量模型预测输出与实际目标之间差距的函数。在监督学习任务中,我们通常希望模型的预测尽可能接近真实的目标值。损失函数就是用来量化模型预…

神经网络基础--激活函数

🕹️学习目标 🕹️什么是神经网络 1.神经网络概念 2.人工神经网络 🕹️网络非线性的因素 🕹️常见的激活函数 1.sigmoid激活函数 2.tanh激活函数 3.ReLU激活函数 4.softmax激活函数 🕹️总结 &#x1f57…

计算机基础(Windows 10+Office 2016)教程 —— 第5章 文档编辑软件Word 2016(上)

第5章 文档编辑软件Word 2016 5.1 Word 2016入门5.1.1 Word 2016 简介5.1.2 Word 2016 的启动5.1.3 Word 2016 的窗口组成5.1.4 Word 2016 的视图方式5.1.5 Word 2016 的文档操作5.1.6 Word 2016 的退出 5.2 Word 2016的文本编辑5.2.1 输入文本5.2.3 插入与删除文本5.2.4 复制与…

二进制与进制转换与原码、反码、补码详解--内含许多超详细图片讲解!!!

前言 今天给大家分享一下C语言操作符的详解,但在此之前先铺垫一下二进制和进制转换与原码、反码、补码的知识点,都非常详细,也希望这篇文章能对大家有所帮助,大家多多支持呀! 操作符的内容我放在我的下一篇文章啦&am…

基于人工智能的口试模拟、LLM将彻底改变 STEM 教育

概述 STEM教育是一种整合科学(Science)、技术(Technology)、工程(Engineering)和数学(Mathematics)的教育方法。这种教育模式旨在通过跨学科的方式培养学生的创新能力、问题解决能力…

MySQL 高级 - 第十四章 | 事务基础知识

目录 第十四章 事务基础知识14.1 数据库事务概述14.1.1 存储引擎支持情况14.1.2 基本概念14.1.3 事务的 ACID 特性14.1.4 事务的状态 14.2 如何使用事务14.2.1 显示事务14.2.2 隐式事务14.2.3 隐式提交数据的情况14.2.4 使用举例14.2.4.1 提交与回滚14.2.4.2 测试不支持事务的 …

Yarn:一个快速、可靠且安全的JavaScript包管理工具

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,还请三连支持一波哇ヾ(@^∇^@)ノ) 目录 一、Yarn简介 二、Yarn的安装 1. 使用npm安装Yarn 2. 在macOS上…

11.redis的客户端-Jedis

1.Jedis 以redis命令作为方法名称,学习成本低,简单使用。但是jedis实例是不安全的,多线程环境下需要基于连接池来使用。 2.Lettuce lettuce是基于Netty实现的,支持同步,异步和响应式编程方式,并且是线程…

EmEditor 打开文档后光标如何默认定位到文档最后一行?

1、录制宏 (1)、点击工具栏上的红色录制宏按钮,开始录制宏。如图: (2)、按住快捷键Ctrl End快捷键,使光标跳转到文档末尾 (3)、完成录制后,再次点击录制按钮…

Hive SQL ——窗口函数源码阅读

前言 使用Starrocks引擎中的窗口函数 row_number() over( )对10亿的数据集进行去重操作,BE内存溢出问题频发(忘记当时指定的BE内存上限是多少了.....),此时才意识到,开窗操作,如果使用 不当,反而…

stm32工程配置

目录 STM32F103 start:启动文件、内核寄存器文件、外设寄存器文件、时钟配置文件 library:标准库函数(内核及外设驱动) user:用户文件、库函数配置文件、中断程序文件 添加宏定义 STM32F407 start目录 启动文件…

实战:使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)

1、使用Certbot签发免费ssl泛域名证书 | One实战:使用Certbot签发免费ssl泛域名证书(主域名及其它子域名共用同一套证书)-2024.8.4(成功测试)https://wiki.onedayxyy.cn/docs/docs/Certbot-install/

Transformer相关介绍

1 Transformer 介绍 Transformer的本质上是一个Encoder-Decoder的结构。 1.1 编码器 在Transformer模型中,编码器(Encoder) 的主要作用是将输入序列(例如文本、语音等)转换为隐藏表示(或者称为特征表示…

24军dui文职联勤保障部报名照规格要求

24军dui文职联勤保障部报名照规格要求 #军队文职 #文职 #文职备考 #联勤保障部队 #文职考试 #文职上岸 #2024军队文职

python-查找元素3(赛氪OJ)

[题目描述] 有n个不同的数&#xff0c;从小到大排成一列。现在告诉你其中的一个数x&#xff0c;x不一定是原先数列中的数。你需要输出最后一个<x的数在此数组中的下标。输入&#xff1a; 输入共两行第一行为两个整数n、x。第二行为n个整数&#xff0c;代表a[i]。输出&#x…

练习2.30

2.29题目没有理解,暂时没有做出来,先把2.30做了 上代码 (defn square [x](* x x)) ;第一版,直接定义 (defn square-tree[tree](cond (not (seq? tree)) (square tree)(empty? tree) nil:else (cons (square-tree (first tree)) (square-tree (rest tree)))) ) ;使用map …

LeetCode刷题笔记 | 283 | 移动零 | 双指针 |Java | 详细注释

&#x1f64b;大家好&#xff01;我是毛毛张! &#x1f308;个人首页&#xff1a; 神马都会亿点点的毛毛张 原地移除元素2 LeetCode链接&#xff1a;283. 移动零 1.题目描述 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元…

Nextjs——国际化那些事儿

背景&#xff1a; 某一天&#xff0c;产品经理跟我说&#xff0c;我们的产品需要搞国际化 国际化的需求说白了就是把项目中的文案翻译成不同的语言&#xff0c;用户想用啥语言来浏览网页就用啥语言&#xff0c;虽然说英语是通用语言&#xff0c;但国际化了嘛&#xff0c;产品才…

学习编程的第二十天,加油!

3&#xff1a;递归与迭送&#xff08;循环是一种迭代&#xff09; &#xff01;&#xff01;&#xff01;递归算有些东西时计算量会很大导致运行时间过久&#xff0c;而使用循环会大大节省时间&#xff0c;但需要注意溢出的情况。 递归的练习&#xff0c;第一张呢不符合我们的…

刷题——不同路径的数目

不同路径的数目(一)_牛客题霸_牛客网 我第一眼&#xff0c;觉得是没有思路的&#xff0c;我也是看别人代码反应过来&#xff0c; 画图可以看出来 外边沿的只有一种到达方式&#xff0c;全部赋值1&#xff0c; 如果有两个方块相接&#xff0c;那就让此方块的左邻和右邻相加&…