秒杀是如何实现的(电商项目秒杀功能如何实现)
这其实和每次微博有爆炸新闻热搜就挂掉的场景是相似的,我和我的BAT同事们讨论过这个问题,我们想出了一些场景和实现方式,不妨和大家分享下。
所谓秒杀,它的难点有两个,分别是瞬时间的高并发与请求量远大于库存量,引申下来就是首先从服务器的角度,要抗住这个瞬时间的巨大请求量,server不能被打崩溃;然后再在保证数据一致性的情况下,用好分布式锁,进行秒杀请求分配。
巨大请求量
首先,针对瞬时间的巨大请求量,这个问题的解决方式只有扩容。还记得每次出点新闻,微博的搜索功能都会挂掉的事情吗,那就是由于当时搜索的人实在太多了,server实在没法响应这么多的请求,就挂了。微博的解决方式也就是扩容,当时王宝强和MR的事情,有一次好像是MR号称要爆料,吓得微博赶紧扩容,结果爆出来的料好像根本没有水花。每次扩容都是要钱的啊,要花钱买机器部署服务器的啊,才不是白白扩容的,所以那一次相当于微博被MR溜了一圈。等到上次陈羽凡吸毒,MR疑似在微博映射某人也吸毒的时候,微博的boss直接回复,“别闹了,不会再为你扩容了”
库存量有限
那远大于库存量这个问题怎么解决呢。其实也比较简单,假如说现在有10个商品等待秒杀,但是此时有10000个请求,此时在持久层之上,可能是接口层,就会拦截掉99.9%的请求,也就是说,1000个请求里,999个都在接口层就被处理掉,给了返回了,此时用户看到的结果就是,秒杀失败,没有抢到。最后,1000个里面剩下的最后一个幸运儿,才真正的走到了逻辑层,再去数据持久层里拿到秒杀到的商品信息。
以上是我们讨论的部分结果,如果对你有所启发或者帮助,欢迎点个赞或者留个言再走。
我是苏苏思量,来自BAT的Java开发工程师,每日分享科技类见闻,欢迎关注我,与我共同进步。
所谓的秒杀就是营造商品热销.购买人数众多.导致服务器崩溃的效果...
当然是营造服务器崩溃的假象...
可将秒杀链接单独分流道一个低带宽入口...
也可直接返回拒绝服务...
总之:
1.让用户感觉有很多人抢着买.买不到就亏了.
2.让用户买不到.买到了老板就亏了..
....
****第二点尤其重要****
....
看看其他人的回答....
一地的技术直男....
活该搞一辈子技术...
你们连老板要啥都不知道...
在那里瞎研究...
方向不对.
你加多少班都是磨洋工...
留言与评论(共有 0 条评论) |