左耳听风
陈皓
网名“左耳朵耗子”,资深技术专家
180930 人已学习
新⼈⾸单¥98
登录后,你可以任选6讲全文学习
课程目录
已完结/共 119 讲
左耳听风
15
15
1.0x
00:00/00:00
登录|注册

61 | 性能设计:秒杀

边缘节点计算的普适性
高并发架构和测试
限流用户请求
在CDN结点上部署小服务
使用CDN
单条的热点数据
网络带宽不够
100万人同时下单请求
校验码
倒计时按钮
秒杀的landing page
更多的思考
秒杀的解决方案
秒杀的技术挑战
秒杀的流程
管理设计篇
弹力设计篇
性能设计篇之“秒杀”
分布式系统设计模式

该思维导图由 AI 生成,仅供参考

你好,我是陈皓,网名左耳朵耗子。
一说起秒杀,大家都觉得这事很有技术含量。实际上,并不是这个样子的,秒杀这种互联网的交易方式其实并没有我们想象中的那么复杂。下面先让我们来系统地看一下,秒杀是怎么做的。

秒杀的流程

“秒杀”其实是商家为了促销,使用非常低的价格销售商品,比如,1 元卖 iPhone,100 台,于是来了一百万人抢购。
我们把技术挑战放在一边,先从用户或是产品的角度来看一下,秒杀的流程是什么样的。
首先,你需要一个秒杀的 landing page,在这个秒杀页上有一个倒计时的按钮。
一旦这个倒计时的时间到了,按钮就被点亮,让你可以点击按钮下单。
一般来说下单时需要你填写一个校验码,以防止是机器来抢。
从技术上来说,这个倒计时按钮上的时间和按钮可以被点击的时间是需要后台服务器来校准的,这意味着:
前端页面要不断地向后端来请求,开没开始,开没开始……
每次询问的时候,后端都会给前端一个时间,以校准前端的时间。
一旦后端服务器表示 OK 可以开始,后端服务会返回一个 URL。
这个 URL 会被安置在那个按钮上,就可以点击了。
点击后,如果抢到了库存,就进入支付页面,如果没有则返回秒杀已结束。
这个不断轮询的过程,就好像大家等着抢。你想想,有 100 万人来不停地询问有没有开始了这个事,估计后端也扛不住。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

本文介绍了分布式系统设计模式中的性能设计篇之“秒杀”。作者首先从用户和产品角度分析了秒杀的流程,指出了技术挑战,即如何应对100万用户同时下单请求的并发访问。针对这一挑战,作者提出了使用CDN边缘结点来扛流量,并通过限流用户请求来保护数据中心的系统,从而使得整个秒杀得以顺利进行。此外,文章还探讨了如何应对类似双11这样的大规模并发访问,指出了需要认真做高并发的架构和测试,以及不断做水平扩展来解决大规模并发的问题。作者还提出了边缘节点计算的普适性,认为在某些业务场景下,将一些简单的业务逻辑放在边缘可能会有更好的性能和更低的成本。最后,作者展望了边缘计算的发展趋势,并预告了下一篇文章将详细介绍边缘计算。整体而言,本文通过对秒杀系统的技术挑战和解决方案的分析,以及对边缘节点计算的探讨,为读者提供了对分布式系统性能设计中“秒杀”问题的深入理解和启发。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《左耳听风》
新⼈⾸单¥98
立即购买
登录 后留言

全部留言(44)

  • 最新
  • 精选
  • 曾经的十字镐
    最近文章有点水呀

    作者回复: 还想问一下具体哪方面我可以改进?或是你想了解什么样的内容?

    2018-05-22
    3
    61
  • mgxian
    文章里说的CDN是我们平常是的CDN吗? CDN不是只能缓存一些静态内容的吗?难道还可以放代码,执行业务逻辑吗?

    作者回复: CDN当然可以执行逻辑,但是你要去谈商务合作。

    2018-05-22
    4
    32
  • 路西法
    耗子哥这章有点凑字数啊 ,能专注于讲点秒杀方案吗,例如后端如何hold住请求、能否利用websocket或http2异步响应提高吞吐、能否保证请求有序-先到先得、小米网抢购做的出神入化,能否也聊下,哈哈

    作者回复: 这篇文章只专注讲秒杀这一个案例,不讲性能调优。

    2018-05-23
    2
    15
  • Just4test
    最近在研究Lambda@Edge,和这个场景完全契合。

    作者回复: 还有更多的场景。这也是我创业的一个方向。

    2018-05-22
    12
  • anti corruption
    能运行逻辑的cdn的确是很屌的 lua么 皓哥

    作者回复: 最好是FaaS,像AWS的Lambda一样

    2018-05-22
    6
  • 华烬
    个人理解,秒杀要做到最底层数据库无压力,上面每层要进行层层过滤和限制,以达到最后到数据库只有少量请求,比如针对ip限制,不能多次请求,应用层进行数量上的限制,因为你知道自己有多少库存等等吧,cdn方式如何我个人不了解,但针对限制和过滤方面介绍很少啊

    作者回复: 前面的限流模式有讲

    2018-05-22
    4
  • guhowo
    耗子哥,看了您这么多分布式的文章,想问一下,如何入门及系统的学习分布式呢

    作者回复: 关注程序练级攻略后续的文章,分布式系统会有极为丰富的学习

    2018-06-15
  • 天天向上
    0.02%是基于自己假想的瞬间并发请数量以及自己计划的可售资源给出的评估,如果可售资源不变,实际瞬间并发再扩大一百倍,或者降低一百倍呢?会不会出现多卖和少卖的尴尬?

    作者回复: 你没好好看我的文章。这个比例是动态算出来的。

    2018-05-23
  • 袁克强😅
    国内cdn哪个能执行逻辑代码?七牛之类的

    作者回复: 你要谈定制化需求

    2018-05-22
  • 一飞
    某东逻辑是这样的:网关限流,单机限流(流量值可以在压测时评估出来),redis 扣减库存key(定时load库存),数据库扣减库存,如果都成功的话,用户拿到这个券了。
    2018-05-23
    1
    31
收起评论
显示
设置
留言
44
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部