码迷,mamicode.com
首页 > 其他好文 > 详细

[梁山好汉说IT] 梁山好汉和秒杀系统

时间:2019-11-22 23:56:20      阅读:137      评论:0      收藏:0      [点我收藏+]

标签:机制   进程锁   防御系统   利用   线程   体系   事先   分数   广播   

今天看了一篇好文章,里面一些思路颇值得借鉴。先摘录总结精华如下,然后看看梁山好汉如何处理秒杀系统。
我看到秒杀这个概念,第一时间就想到了"呼延灼三千连环甲马"。

1. 摘录

a. 总体思路 --- 系统隔离

因为秒杀活动是有计划的,并且在短时间内会爆发大量的请求。为了不影响现有的业务系统的正常运行,我们需要把它和现有的系统做隔离。即使秒杀活动出现问题也不会影响现有的系统。隔离的设计思路可以从三个维度来思考:业务隔离/技术隔离/数据库隔离。

b. 值得借鉴的特色思路方法

b.1 “热场”
在秒杀活动开始之前,可以设计一个“热场”。“热场”的形式多种多样,例如:分享活动领优惠券,领秒杀名额等等。“热场”的形式不重要,重要的是通过它获取一些准备信息。例如:有可能参与的用户数,他们的地域分布,他们感兴趣的商品。为后面的技术架构提供数据支持。

b.2 风控过滤
为了避免恶意程序参与秒杀,在客户端会设计一些问答或者滑块的功能,减少此类机器人对服务器的压力。
服务器也会过滤一些疑似机器人或者恶意请求。例如:从固定 IP 过来的,频率过高的请求。

b.3 限流削峰
瞬时的海量请求好比请求的“高峰”,我们架构系统的目的就是“削峰”。 需要使用服务集群和水平扩展,让“高峰”请求分流到不同的服务器进行处理。同时,还会利用缓存和队列技术减轻应用处理的压力,通过异步请求的方式做到最终一致性。由于是多线程操作,而且商品的额度有限,为了解决超卖的问题,需要考虑进程锁的问题。

b.4 数据库
秒杀活动持续时间短,瞬时数据量大。为了不影响现有数据库的正常业务,可以建立新的库或者表来处理。在秒杀结束以后,需要把这部分数据同步到主业务系统中,或者查询表中。
我们在秒杀之前,需要通过业务的手段,例如:热场活动,问卷调查,历史数据分析。通过他们去估算这次秒杀可能需要存储的数据量。


2. 梁山好汉如何处理秒杀系统(呼延灼三千连环甲马)

秒杀特点:秒杀时大量用户会在同一时间,抢购同一商品,网站瞬时流量激增。
三千连环马特点:“每一队三十匹马,一齐跑发,不容你不向前走。那连环马军,漫山遍野,横冲直撞将来”。
这两个特点非常相似。

梁山的秒杀系统实现得非常好,很多手法暗合我们如今的处理机制。

a. 热场
梁山也有“热场”。秒杀系统的“热场”是我们事先主动设计执行的。但梁山就是遭遇战变成了“热场”。通过“热场”活动,梁山发现确实挡不住这个连环马的冲击,对连环马这个秒杀活动的特点有了深入的了解。

"前面五队军马望见,便乱跑了,策立不定;后面大队人马,拦当不住,各自逃生。就水寨里整点人马,折其大半,却喜众头领都全;虽然折了些马匹,都救得性命。" 。

b. 系统隔离
梁山专门打造了秒杀系统来对付连环马,这个是专门秒杀系统,不是梁山常规战斗序列。

"每十个会使钩镰枪的,间着十个挠钩手,但见马到,一搅钩翻,便把挠钩搭将入去捉了"。

c. 系统搭建
梁山专门从硅谷招聘了世界顶尖技术高手徐宁携带技术入股。

"当下徐宁选军已罢,便下聚义厅来,拿起一把钩镰枪,自使一回。众人见了喝采"
"众军汉见了徐宁使钩镰枪,都喜欢。就当日为始,将选拣精锐壮健之人,晓夜习学。又教步军藏林伏草,钩蹄拽腿,下面三路暗法。不到半月之间,教成山寨五七百人"

d. 风控过滤
梁山为了防止连环马在秒杀活动未开始时候恶意侵入,进行了风控过滤,打造了防御系统。

"山寨中只教水军头领牢守各处滩头,水底钉了暗桩。呼延灼虽是在山西山北两路出哨,决不能够到山寨边"

e. 削峰

梁山也有削峰操作,分别是"分流削峰"/"限流削峰"

"今将步军下山,分作十队诱敌"----> 这就是"分流削峰,服务集群和水平扩展,让“高峰”请求分流到不同的服务器进行处理"

"但见军马冲掩将来,都望芦苇荆棘林中乱走。平川窄路,也如此埋伏。" ---->这就是"限流削峰",而且连环马面对"芦苇/荆棘林/窄路",只能在这种地形前面排队依次通过,这不就相当于用队列进行削峰嘛。

f. 居然还有信号广播,协调整体系统
"说犹未了,只听得北边一声炮响。呼延灼骂道:“这炮必是凌振从贼,教他施放"
"正欲分兵之际,只见西边又是四队人马起来,呼延灼心慌;又听的正北上连珠炮响,一带直接到土坡上"

3. 参考
这一次,彻底弄懂“秒杀系统” http://www.sohu.com/a/341289196_728045

[梁山好汉说IT] 梁山好汉和秒杀系统

标签:机制   进程锁   防御系统   利用   线程   体系   事先   分数   广播   

原文地址:https://www.cnblogs.com/rossiXYZ/p/11914614.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!