如何设计一个秒杀系统 / 大并发高可用秒杀系统的设计之道
许令波
前阿里巴巴高级技术专家
 
  • 课程目录
  • 课程介绍
  • 开篇词 | 秒杀系统架构设计都有哪些关键点?

    如何才能更好地理解秒杀系统呢?本文将从程序员和架构师两个角度给你带来一些启发。

  • 01 | 设计秒杀系统时应该注意的5个架构原则

    秒杀系统本质上就是一个满足大并发、高性能和高可用的分布式系统。本文介绍构建这种系统的“4要1不要”原则,以及不同级别流量下如何由简单到复杂地打造系统架构。

  • 02 | 如何才能做好动静分离?有哪些方案可选?

    秒杀的场景中,对于系统的要求其实就三个字:快、准、稳。设计数据动静分离方案,是让你的系统“快起来”的一个关键技术。

  • 03 | 二八原则:有针对性地处理好系统的“热点数据”

    本文中的热点发现和隔离,从另一个维度对数据进行了区分处理,以保证系统的高性能运转。它不仅对“秒杀”这个场景有意义,对其他高性能分布式系统也非常有价值。

  • 04 | 流量削峰这事应该怎么做?

    秒杀会带来一个特别高的流量峰值,它对资源的消耗在瞬时间达到高峰。在处理这种高并发问题时,我们应如何减轻系统压力,同时又有效地节省系统资源成本呢?

  • 05 | 影响性能的因素有哪些?又该如何提高系统的性能?

    性能优化的过程首先要从发现短板开始,然而再采用具有针对性的优化措施。

  • 06 | 秒杀系统“减库存”设计的核心逻辑

    实际业务场景中的“减库存”操作并非想象中那么简单,而我们又有哪些方案可选,又如何缓解减库存所存在的问题呢?

  • 07 | 准备Plan B:如何设计兜底方案?

    我们一起看了很多极致的优化思路,但现实中意外总是难免的。要在秒杀场景下保证系统的高可用性,我们能否设计一个Plan B方案,在最坏情况发生时仍能做到从容应对呢?

  • 08 | 答疑解惑:缓存失效的策略应该怎么定?

    技术有起点,却没有终点。恰逢一波双十一结束,秒杀专栏特“加餐”一期来为你答疑解惑。

本专栏由前阿里巴巴高级技术专家许令波创作并维护。

许令波,花名“君山”,2009年加入淘宝,一直关注性能优化领域,经历了淘宝PV从1亿到50亿的发展历程,参与了淘宝高访问量Web系统模板引擎的改造、静态化、无线化、CDN等优化改造项目。任职期间,他一直参与淘宝高访问量的系统页面详情系统的优化工作,设计并实现了sketch模板引擎将服务端性能提升近30%左右。

“秒杀”,就是在同一个时刻有大量请求争抢购买同一个商品,并完成交易的过程,其间涉及大量的并发读和并发写,并要求高可靠和高性能的系统支持。

也因此,“秒杀”对于程序员来讲也意味着巨大的挑战。如何让系统面对百万级的请求流量不出故障?如何保证高并发情况下数据的一致性写?如何在不堆服务器的情况下应对是平时数百上千倍的并发访问?如何分别针对大流量的读写请求进行服务端的极致优化?你都将在这个专栏里找到答案。

本专栏希望带你透彻理解秒杀系统的各个关键技术点,希望你在学完之后,能够快速搭建一套满足自己业务场景的高可用秒杀系统。而更多的是,我们希望借助“秒杀”这个互联网高并发场景中的典型代表,带你了解如何打造一个超大流量并发读写、高性能,以及高可用的系统架构。

专栏模块

本专栏共7期,分为三大模块。

  • 高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。本专栏将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。
  • 一致性。 秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,我将用一篇文章来专门讲解如何设计秒杀减库存方案。
  • 高可用。 虽然我介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,我们还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。专栏的最后,我将带你思考可以从哪些环节来设计兜底方案。

你觉得怎么样?期待您评价: