美妙的秒杀架构

        看到了微信公众号(架构师之路)的一篇文章,立即被征服了,里面主要介绍如何来设计秒杀架构。

        秒杀程序问题根源在于:海量的请求在争抢有限的资源,秒杀其实和火车票非常像,都是对有限资源的抢占。这一点和微博不一样,微博不需要加锁,是客户端来拉去,资源是不受限的。

       首先是要对于架构进行分层,最上面是展示层,其次是站点层,然后是服务层,最后才是数据层。秒杀架构的核心其实:保护数据层,因为在整套秒杀架构中,其实最危险的就是数据层,因为数据层(DB)的并发量在各层中是最小的,所以,要把不必要的操作在数据层之上就Hold住。

       首先是展示层,每次查询间隔控制N秒,比如按钮置灰;避免等待过程中用户频繁提交;

       但是如果是程序员用户呢?他们可以模拟客户端循环发送请求,这个时候,就需要站点层进行过滤,过滤的规则是uid(session)信息,如果某个session5秒内进行了两次操作,则进行屏蔽;可以通过nginx来进行分流,并根据hash值来将同一个session定位到同一台机器上面。

       如果用户是黑客呢?手中掌握了10w肉鸡,呵呵,可能夸张一些,但是如果情况确实是海量用户来访问,那么核心在于服务层,前两层主要过滤非法请求,服务层才是真正过滤合法请求:队列。比如北京大连只有2000张,OK,排队列,数量超过的直接返回请稍后再试,让用户再次刷新页面,看到真实数量。服务层才是真实的和数据库交互,这个时候数据库的压力已经非常小,首先请求一定是合法请求,其次队列已经把访问数量进行控制。

       看完了这篇文章顿时感到非常畅快,之前对于秒杀这种高并发一直有些懵懂,现下了解了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

张叫兽的技术研究院

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值