前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >常见分布式应用系统设计图解(十):电商秒杀系统

常见分布式应用系统设计图解(十):电商秒杀系统

作者头像
四火
发布2022-07-19 14:50:01
6570
发布2022-07-19 14:50:01
举报
文章被收录于专栏:四火的唠叨

这篇是关于电商平台秒杀系统的。

首先,我觉得 “秒杀” 是一个中国色彩浓重的词,这样的概念在西方电商系统中也有,但只有在中国,本来业务量就已经如此之巨大了,还将其如此发扬开来。因此顶尖的秒杀高并发场景,还真是基本上只有在中国的电商平台系统中,才能见得到。

其次,我觉得对于系统设计的学习,电商秒杀系统这样的极致,即便再精彩,还是应当放在第二位的。扎扎实实地把常规的高并发系统设计做好,才是最重要的。因为无论秒杀系统使用怎样的特殊技巧和手段,高并发分布式系统才是一个秒杀系统工作的根基。

有了以上说明,现在再来谈论电商秒杀系统。电商秒杀系统,它首先是一个电商系统,因此一个大型的电商系统一般要至少包括这样几个功能:

  • 商品浏览
  • 商品入购物车
  • 下订单
  • 结算支付

因此,对于上面这张图,先从电商系统的角度来看。为了实现电商系统的基本功能,应该具备这样几个服务:

  • Product Service,包含产品元信息。
  • User Service,包含用户信息。
  • Storage Service,包含产品库存信息。
  • Payment Service,提供专门的支付服务。
  • Order Service,订单服务。
  • 当然还有一些没有列出来,比如搜索、陈列产品的服务等等。

流程上面:

  • 下面实线部分就是订购流程的主体,其中的多数内容,无论是不是秒杀,都是一样的。
  • 用户进行选择订购支付,订单下成功以后,会去库存里面暂时锁住货物记录,给用户时间支付,用户支付成功以后,会修改订单状态,订单系统就会相应地修改库存该货物的状态。
  • 如果超过一定时限没有支付成功,订单系统会异步修改库存状态,把该货物的状态改回 “可订购”,并关闭当前订单。

有了基本的电商系统角度对组件和流程的认知,再来看秒杀的角度。

  • 上面虚线的部分,就是秒杀活动前准备的部分。管理员会创建秒杀活动记录,这些秒杀货物会单独标记和存放,以避免被普通订购业务所涉及。在活动开始前秒杀服务器会加载相应的数据到内存中,这部分下面会提到。
  • 对于为了秒杀而进行的系统设计与优化,首先,最重要的一条,是要做到系统隔离。秒杀系统要尽可能地不要影响到主要业务,因此这里面的 web 服务,要单独使用为秒杀服务配备的服务器。
  • 其次,要尽可能地把请求拦截在流程的前部,并平滑请求量。
    • 比如,秒杀链接生成的时候,用户的请求可以不用全部放进来,对于流量特别大的情况,让大部分用户的请求从用户就近节点的 CDN 走,告知用户秒杀结束。只有少部分用户的请求放到中心节点来。
    • 比如,对于秒杀页面的加载,静态资源要尽可能在动静分离的前提下,地使用页面缓存和从 CDN 去获取,以减缓对主系统的压力。
    • 再比如,通过点击后按钮置灰、验证码、答题、token 等方式减少和延缓用户请求,也过滤掉那些脚本请求。
    • 最后,也是最重要的,是系统一定要具备成熟的流控机制,丢弃无法处理的请求。
  • 再次,系统要尽可能地减少请求处理的时间,从而增大吞吐量。
    • 比如,在 Web Server 上要引入缓存,将秒杀商品的信息加载到内存中。每台机器都分配一定量的可秒杀商品,这些商品页全部加载到内存中。秒杀防重也在内存中做。
    • 考虑下单的过程可能是一个系统开销较大的过程,可以将下单的请求放到队列中维护,Order Service 会异步处理。这些异步处理的过程,对于一致性要求高的部分,可以使用单独的锁服务来保证。

文章未经特殊标明皆为本人原创,未经许可不得用于任何商业用途,转载请保持完整性并注明来源链接 《四火的唠叨》

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
内容分发网络 CDN
内容分发网络(Content Delivery Network,CDN)通过将站点内容发布至遍布全球的海量加速节点,使其用户可就近获取所需内容,避免因网络拥堵、跨运营商、跨地域、跨境等因素带来的网络不稳定、访问延迟高等问题,有效提升下载速度、降低响应时间,提供流畅的用户体验。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档