写点什么

第九周作业

用户头像
Jack
关注
发布于: 2020 年 12 月 20 日

设计一个秒杀系统,主要的挑战和问题有哪些?核心的架构方案或者思路有哪些?

问题:

1、高并发,秒杀系统第一个要面对的问题。瞬时的高并发访问量,有可能直接击垮整个系统。

2、负卖,原本只有 100 个的库存,由于漏洞直接负卖 200 个,商家亏死。

3、恶意访问,由于商业利益驱动,不法访问者使用模拟器访问你的页面,为的就是要抢你的库存。

4、地址暴露,你的页面包含了后台 API 请求地址,懂行的亲就会利用这个 API 直接访问你的后台,从而跳过页面上面你自己设置的步骤。

5、数据库瓶颈,数据库所能承受的访问量,绝对是不能和你的秒杀活动带来的访问量比的,如何优化和使用数据库,也是一个需要重点考虑的问题。


思路:

1、服务单一职责原则,秒杀系统与业务系统彻底解耦,秒杀系统只完成秒杀的事情,完成满足促销活动的事情,业务系统负责自己的业务,比如订单,发货,客诉等。

2、使用【令牌桶】控制你的库存,有多少库存就生成多少令牌,有令牌的访问请求,才允许进行访问。没有令牌的访问,直接返回【请稍后】。这也可以控制整个促销活动的节奏。这也对【令牌桶】算法和对应的服务提出更高的要求。

3、动态页面静态化,讲动态页面进行静态处理,这样就能减少对后台服务的依赖程度,静态页面访问速度非常快的,提高客户体验。

4、【限流】,针对恶意访问,特别的模拟器访问,可以针对单 IP 的访问请求数进行【限流】,算法判断出是模拟器的话,直接【拒绝】请求。

5、隐藏后台 API 的 url,对 url 进行加盐处理,校验不通过的访问直接拒绝。

6、缓存集群,缓存其他业务数据,能够静态化的数据直接静态化。


总结

偷懒了

用户头像

Jack

关注

还未添加个人签名 2018.03.08 加入

还未添加个人简介

评论

发布
暂无评论
第九周作业