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

在这里插入图片描述

削峰与限流防刷技术

一、削峰技术

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

🚀核心技术

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

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

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

🌏解决方案

在这里插入图片描述

  • 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.采集设备指纹并下发凭证
​ 手机终端采集设备指纹 (模拟器/设备牧场):

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

私信取图!

  • 23
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Itfuture03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值