Java限流后给用户返回什么_Java项目笔记之秒杀接口防刷限流

本文介绍了Java项目中接口防刷限流的策略,包括缓存、降级、限流的使用。重点讲解了限流后如何隐藏秒杀地址,通过生成随机数、图形验证码等方式增强安全性。同时,文章详细阐述了Zuul过滤器的使用,特别是错误过滤器的自定义,以在限流异常时返回友好的用户提示。
摘要由CSDN通过智能技术生成

接口防刷限流

提高门槛,提高被攻击的代价,没有绝对安全的方式。

在开发分布式高并发系统时,我们通常有三种方法保护系统:

缓存、降级、限流

缓存

缓存的目的是提升系统访问速度和增大系统处理容量

降级

降级是当服务出现问题或者影响到核心流程时,需要暂时屏蔽掉,直接返回简单结果,而不继续执行后面正常的业务流程,待高峰或者问题解决后再打开

限流

限流的目的是通过对并发访问/请求进行限速,或者对一个时间窗口内的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务、排队或等待、降级等处理

隐藏秒杀地址

c3d7edfddf67255cad6f4c5194de0fb3.png

怎样将秒杀地址隐藏起来?

41e0d9b8d117733be3638e62ad44916e.png

3344aaf3398b24976849c4519628c197.png

安全服务和秒杀服务应该是放在两个不同的微服务中的,这里都放到了一个服务当中。

前端doSeckill分两步:

点击立即秒杀:

e4e724d300acb79820186fc39c8d3604.png

执行获取随机数的方法,获取随机数成功之后才会调用到doSeckill函数。

获得带有随机数的url;

然后调用秒杀函数发起请求;

getRandom()

函数:

a1a01eefd077597a066787314f39f668.png

在回调函数返回成功之后,调用doSeckill()函数进行秒杀。

后端生成隐藏地址的controller方法:

需要校验当前用户是否登录;

生成uuid随机数

将uuid随机数保存进Redis中,设置有效时间,(key关联用户和秒杀场)

返回uuid随机数

7bb571c931d933b6dd1ed2dcfc616529.png

生成了random随机数之后,接下来在路径中使用。

使用:修改路径

前端代码:动态的将getRandom函数获得的随机数拼到地址中去:

0f74288b5430752171033c3959b1d40c.png

后端代码:doSec

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值