秒杀系统总结与思考(四) 流量削峰

什么是流量削峰

秒杀这一场景,削峰的本质是更多的延缓用户请求的发出,以便减少和过滤一些无效的请求,遵从“请求数尽量少”的原则

为什么要用

削峰的存在,一是可以让服务器端处理变的更加平稳,二是节省服务器资源成本。

实现思路

排队、答题、分层过滤

排队

1、利用线程池加锁等待
2、先进先出、仅仅后出等常用的内存排队算法
3、请求序列化文件,然后再顺序读文件恢复请求

答题

作用: 1、防作弊。2、延缓请求
在这里插入图片描述
答题模块三部分
1、题库生成,重要防止机器算出结果
2、题库推送模块,秒杀答题前,把题目提前推送给详情和交易。题库推送目的是为了保证每次用户请求的题目是唯一,目的也是防止答题作弊
3、题目图片生成模块,生成图片增加干扰因素,同样防止机器。答题应该将题目图片提前推送到CDN进行预热。

答案验证逻辑

在这里插入图片描述
用户提交答案和题目答案比较,如果验证通过就继续下一步下单逻辑,否则就失败。将问题和答案用下面key来进行MD5加密:
· 问题key: user + itemId + question_id + time + pk
· 答案key: userId + itemId + answer + pk

还需要注意的:
除了验证答案,还要验证用户本身信息(是否登录,cookie是否完整等)
对提交答案时间做出限制,超过1s的可能是机器答题

分层过滤: 过滤无效请求

分层校验的基本原则: (每一步都做库存校验,不做强一致性要求,写操作时再做强一致校验)
1、将动态请求的读数据缓存(cache)在Web端,过滤无效数据读
2、对数据不坐强一致性校验,减少一致性校验产生的瓶颈
3、对数据进行基于时间的合理分片,过滤过期失效请求
4、对写请求做限流保护,将超出系统承载能力的请求过滤
5、对数据进行强一致性校验,只保留最后有效数据。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值