(秒杀项目) 4.9 削峰限流与防刷(核心)

您所在的位置:网站首页 rabbitmq削峰限流怎么做 (秒杀项目) 4.9 削峰限流与防刷(核心)

(秒杀项目) 4.9 削峰限流与防刷(核心)

2024-07-16 15:45:56| 来源: 网络整理| 查看: 265

一、削峰限流 1. 削峰限流的目的

目的就是解决下单操作时流量过大的问题、假设有某个商品商品总数只有一个、而抢他的人有几百万个、那么在秒杀时假设没有限流一秒之内一个服务器突然就受到了百万几的压力、这样服务器很容易就会奔溃挂掉。而削峰限流的目的就是为了防止这种事情的发生保护服务器的安全。

2.削峰限流的解决方案

在这里插入图片描述大题实现逻辑如上图

验证码:它的目的是平滑流量、在进行秒杀的时候防止秒杀的流量过高。假设有几百万个用户秒杀一个商品如不做任何处理直接单击购买商品后就直接生成订单进行秒杀、这将会是秒级百万的流量这样会导致后面的验证时直接受到百万级别的压力这样服务器很容易奔溃。设置验证码之后用于需要输入验证码后才能进行下单操作、在输入验证码的操作中每个人的手速都是不同的会比直接单击一个按钮所花的时间会多很多、这样就会将下单的操作的流量平摊的更小。验证 --> 大闸 --> 令牌:这三个步骤的目的是最终给用户发一个令牌、有了令牌的用户才能去下单、并且令牌的数量也是要做限制的,应为假设有100件商品、有10万个人秒杀、不可能也发10万个令牌这样既会消耗发令牌的性能也会加大后面处理的流量的压力、10件商品只要有100个令牌其实就够了,这样就比较合理了。令牌数量的限制是通过大闸来指定的。限流器:限流器是防止秒杀的商品数量太大时、几万几十万商品是获取的令牌用户数量也自然就会又这么多、这个流量也是很大的、突然这么大流量直接传给后面也是很容易照成服务器奔溃的。所以加了一个限流、限制每段时间访问的用户数量,将一个很大流量分摊成小的流量防止服务的奔溃。队列(线程池):设置这个的目的是提高单机处理的流量的能力、当流量过大时起一个缓存作用,会将过大的流量压力排队的去处理。最后到交易时交易服务所承担的流量就是比较安全的了。 3.代码实现

1. 验证码 验证码模块使用的是easy capcha、这个使用起来很简单就是指定一个路径然后再用一个输出流指定号宽度创建一个specCaptcha对象、最后out就可以了。

在这里插入图片描述在这里插入图片描述

2.大闸的实现 大闸是通过redis缓存实现的、他是在缓存中存一个键值、键为promotion:gate:活动id,然后数量是商品数量的5倍。这里本来应该通过后台来是实现的但没有写后台只能通过测试代码来实现。 在这里插入图片描述 3.令牌的实现 验证码通过之后就会去获取令牌了 在这里插入图片描述 令牌的具体实现如下图 在这里插入图片描述 获取令牌后就可以继续下一步了。

4.限流到交易的实现

在这里插入图片描述

5. 队列的实现 队列是通过自动注入的spring的线程池实现的、当令牌通过后会通过线程池创建一个线程taskExecutor.submit来去创建订单进行交易。 在这里插入图片描述 在这里插入图片描述

二、防刷

在这里插入图片描述 防刷是防止黄牛以一些方式买走秒杀时的商品然后再以高价卖出去。比较传统的方式有

根据session或者token来限制用户的购买数量、和访问次数、但黄牛往往会有很多账号限制同一ip访问商品的数量、但黄牛可能会有很多张手机卡和很多个账号还是防不住的。

最先进的方式是通过手机终端来限制 限制每个手机只能买一定数量的商品、但有些黄牛也有很多手机,还是防不住。

三、限流器涉及的两种算法

项目中通过初始化一个rateLimiter创建了1000个大小的令牌的限流器、限流器底层是采用令牌桶和漏桶算法两种算法实现的、本项目使用的是令牌桶算法。 在这里插入图片描述

1. 令牌桶算法

有一个限流器、他会去管理一个叫令牌桶的容器,这个容器容量是有限的、初始化时限流器会给令牌桶加入一定量的令牌,并且初始化完之后会有一个令牌生成器会在间隔固定时间内会生成一些令牌到令牌桶中,当令牌桶满之后会溢出多余的令牌。当用户请求时要先经过限流器获取令牌、当令牌桶中没有令牌时则无法访问、有令牌时会给这个请求一个令牌去访问业务并且令牌桶中的令牌数量会减一。 在这里插入图片描述

2. 漏桶算法

漏桶算法也有一个桶叫漏桶、这个桶放的是水滴也是有一定容量的。当用户发送请求时就像当于一滴水到限流器中、假设漏桶满了就无法请求、没满就会将这个请求加到漏桶中。漏桶会在一定间隔时间内漏出一定量的水滴也就是处理一定量的请求。 在这里插入图片描述

3. 两种算法的比较

漏桶算法是比较稳的、每次只能处理固定量的请求他的速率是固定的。令牌桶则是可能受到突发情况、突然接收到和令牌桶同样数量的请求、那么服务器就要承受这么大的流量。

所以在实际业务中如果你希望比较平稳的流量访问、就用漏桶。若希望能偶尔承受爆发的流量就使用令牌桶。

四、总结 理解并熟记削峰限流的流程防刷的几种方式能够大概讲出来限流的两种算法要熟记。


【本文地址】

公司简介

联系我们

今日新闻


点击排行

实验室常用的仪器、试剂和
说到实验室常用到的东西,主要就分为仪器、试剂和耗
不用再找了,全球10大实验
01、赛默飞世尔科技(热电)Thermo Fisher Scientif
三代水柜的量产巅峰T-72坦
作者:寞寒最近,西边闹腾挺大,本来小寞以为忙完这
通风柜跟实验室通风系统有
说到通风柜跟实验室通风,不少人都纠结二者到底是不
集消毒杀菌、烘干收纳为一
厨房是家里细菌较多的地方,潮湿的环境、没有完全密
实验室设备之全钢实验台如
全钢实验台是实验室家具中较为重要的家具之一,很多

推荐新闻


图片新闻

实验室药品柜的特性有哪些
实验室药品柜是实验室家具的重要组成部分之一,主要
小学科学实验中有哪些教学
计算机 计算器 一般 打孔器 打气筒 仪器车 显微镜
实验室各种仪器原理动图讲
1.紫外分光光谱UV分析原理:吸收紫外光能量,引起分
高中化学常见仪器及实验装
1、可加热仪器:2、计量仪器:(1)仪器A的名称:量
微生物操作主要设备和器具
今天盘点一下微生物操作主要设备和器具,别嫌我啰嗦
浅谈通风柜使用基本常识
 众所周知,通风柜功能中最主要的就是排气功能。在

专题文章

    CopyRight 2018-2019 实验室设备网 版权所有 win10的实时保护怎么永久关闭