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

0x00 摘要

今天看了一篇好文章,里面一些思路颇值得借鉴。先摘录总结精华。然后看看梁山好汉如何处理秒杀系统(系统隔离/系统搭建/风控过滤/削峰/信号广播......)。

0x01 IT背景知识

文章摘录

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

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

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

“热场”

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

风控过滤

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

限流削峰

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

数据库

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

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

我看到秒杀这个概念,第一时间就想到了"呼延灼三千连环甲马"。这古今两个系统的特点非常相似。

  • 秒杀特点:秒杀时大量用户会在同一时间,抢购同一商品,网站瞬时流量激增。

  • 三千连环马特点:“每一队三十匹马,一齐跑发,不容你不向前走。那连环马军,漫山遍野,横冲直撞将来”。

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

1. 热场

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

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

2. 系统隔离

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

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

3. 系统搭建

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

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

4. 风控过滤

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

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

5. 削峰

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

"今将步军下山,分作十队诱敌"

这就是"分流削峰,服务集群和水平扩展,让“高峰”请求分流到不同的服务器进行处理"

"但见军马冲掩将来,都望芦苇荆棘林中乱走。平川窄路,也如此埋伏。"

这就是"限流削峰",而且连环马面对"芦苇/荆棘林/窄路",只能在这种地形前面排队依次通过,这不就相当于用队列进行削峰嘛。

6. 居然还有信号广播,协调整体系统

"说犹未了,只听得北边一声炮响。呼延灼骂道:“这炮必是凌振从贼,教他施放" "正欲分兵之际,只见西边又是四队人马起来,呼延灼心慌;又听的正北上连珠炮响,一带直接到土坡上"

0x03 参考

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

[梁山好汉说IT] 梁山好汉和秒杀系统的更多相关文章

  1. [梁山好汉说IT] 梁山好汉和抢劫银行

    [梁山好汉说IT] 梁山好汉和抢劫银行 0x00 摘要 今天看了一篇文章<史上最有学问的银行劫匪,教你如何把握人生重大机会>.先摘录精华如下,然后看看梁山好汉在类似情况下如何处理 (东京汴 ...

  2. 【Todo】秒杀系统材料

    秒杀系统:Link <一个经验证可落地的秒杀系统实践思路> 主要依赖于Redis进行处理. http://geek.csdn.net/news/detail/59847   淘宝大秒系统设 ...

  3. PHP秒杀系统-高并发高性能的极致挑战

    慕课网实战教程后端:1.java c++算法与数据结构2.java Spring Boot带前后端 渐进式开发企业级博客系统3.java Spring Boot企业微信点餐系统4.java Sprin ...

  4. 用Redis轻松实现秒杀系统

    秒杀系统的架构设计 秒杀系统,是典型的短时大量突发访问类问题.对这类问题,有三种优化性能的思路: 写入内存而不是写入硬盘 异步处理而不是同步处理 分布式处理 用上这三招,不论秒杀时负载多大,都能轻松应 ...

  5. Java高并发秒杀系统API之SSM框架集成swagger与AdminLTE

    初衷与整理描述 Java高并发秒杀系统API是来源于网上教程的一个Java项目,也是我接触Java的第一个项目.本来是一枚c#码农,公司计划部分业务转java,于是我利用业务时间自学Java才有了本文 ...

  6. PHP秒杀系统全方位设计(一)

    秒杀系统特点人多商品少时间短流量高外挂机器[黄牛和非黄牛] 技术分析瞬间高并发的处理能力多层次的分布式处理能力人机交互与对抗[12306验证码图片] 技术选型分析Linux+Nginx+PHP+Mys ...

  7. PHP秒杀系统全方位设计(二)

    商品页面开发 静态化展示页面[效率要比动态PHP高很多,PHP程序需要解析等步骤,本身就需要很多流程,整个下来PHP的处理花的时间和资源要多] 商品状态的控制 开始前.进行中.库存不足.结束 数据逻辑 ...

  8. Java高并发秒杀系统【观后总结】

    项目简介 在慕课网上发现了一个JavaWeb项目,内容讲的是高并发秒杀,觉得挺有意思的,就进去学习了一番. 记录在该项目中学到了什么玩意.. 该项目源码对应的gitHub地址(由观看其视频的人编写,并 ...

  9. SSM实现秒杀系统案例

    ---------------------------------------------------------------------------------------------[版权申明:本 ...

随机推荐

  1. 【算法】leetcode之 Palindrome Partitioning I&II(转载)

    1 Palindrome Partitioning 问题来源:Palindrome Partitioning 该问题简单来说就是给定一个字符串,将字符串分成多个部分,满足每一部分都是回文串,请输出所有 ...

  2. 利用IDEA构建springboot应用-配置文件

    application.properties配置文件(不建议采用这种配置) 配置文件采用:application.yml文件会更简便,要带空格 属性配置与类中取值 添加bean属性配置到一个类里面,采 ...

  3. pycharm 快捷键使用

    1.Ctrl+/?键 = 选中行全部注释/解封: 2.Ctrl+D = 复制前一行: 3.Ctrl+Z = 撤销: 1.编辑(Editing) Ctrl + Space 基本的代码完成(类.方法.属性 ...

  4. 实践分享:开始用Cordova+Ionic+AngularJS开发App

    http://www.cocoachina.com/webapp/20150707/12395.html 本文是一篇关于我本人在使用Cordova+Ionic以及AngularJS开发移动App的过程 ...

  5. JavaScript 开发者都应该知道的十个概念

    1. 原始值和引用值(Value vs. Reference) 理解对象.数组和函数是如何复制和传递到函数中的.了解引用值是被复制了什么,理解原始值是通过复制值来进行复制和传递的. 简析:ECMASc ...

  6. "不用谢" 的11种表达

    说Thank you ,机械版的反应you are welcome.虽然没错,但实在太老掉牙,在国外使用率不高: 随性,不足挂齿的小事 Not a problem 别放在心上 Any time 有事随 ...

  7. Android 性感美图在线浏览APP

    周末无聊,遂整理了下近来常用的几个开源库,无意间又发现了一些开放接口,于是乎决定融合在一起,做个简单的"性感美图"浏览的APP,名字呢,就叫"性感沙滩",效果如 ...

  8. ORACLE| ORACLE基础语法汇总

    创 ORACLE| ORACLE基础语法汇总 2018-07-18 16:47:34 YvesHe 阅读数 9141更多 分类专栏: [数据库]   版权声明:本文为博主原创文章,遵循CC 4.0 B ...

  9. HDU3336 Count the string 题解 KMP算法

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 题目大意:找出字符串s中和s的前缀相同的所有子串的个数. 题目分析:KMP模板题.这道题考虑 n ...

  10. NIO 中文乱码自我解决的简单DEMO

    import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStrea ...