如何设计一个秒杀系统-许令波-极客时间

极客时间专栏 2019-04-26 14:39:47 阅读(2537) 评论(0)

极客时间出品的《如何设计一个秒杀系统》由许令波所作,许令波是前阿里巴巴高级技术专家。本专栏希望带你透彻理解秒杀系统的各个关键技术点,希望你在学完之后,能够快速搭建一套满足自己业务场景的高可用秒杀系统。而更多的是,我们希望借助“秒杀”这个互联网高并发场景中的典型代表,带你了解如何打造一个超大流量并发读写、高性能,以及高可用的系统架构。

《如何设计一个秒杀系统》封面图

《如何设计一个秒杀系统》讲师介绍

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

《如何设计一个秒杀系统》作者许令波

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

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

《如何设计一个秒杀系统》专栏模块

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

高性能。秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。本专栏将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这4个方面重点介绍。

一致性。秒杀中商品减库存的实现方式同样关键。可想而知,有限数量的商品在同一时刻被很多倍的请求同时来减库存,减库存又分为“拍下减库存”“付款减库存”以及预扣等几种,在大并发更新的过程中都要保证数据的准确性,其难度可想而知。因此,我将用一篇文章来专门讲解如何设计秒杀减库存方案。

高可用。虽然我介绍了很多极致的优化思路,但现实中总难免出现一些我们考虑不到的情况,所以要保证系统的高可用和正确性,我们还要设计一个PlanB来兜底,以便在最坏情况发生时仍然能够从容应对。专栏的最后,我将带你思考可以从哪些环节来设计兜底方案。

《如何设计一个秒杀系统》课程目录

开篇词 | 秒杀系统架构设计都有哪些关键点?

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

秒杀系统整体的架构设计思路

“4要1不要”原则

不同场景下的不同架构案例

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

什么是静态数据和动态数据

如何做动静分享的改造

动静分离的几种架构方案

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

什么是“热点”:热点操作的热点数据

实现一个动态热点的系统

思路:优化、限制、隔离

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

什么是流量削峰

队列缓冲、秒杀答题、分层过滤

具体的实现细节

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

影响性能的因素

如何发现瓶颈

如何优化系统

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

常见的几种减库存方案

减库存的最优实现方式

其中的坑以及关键优化点

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

如何才能保证系统的高可用

降级、限流、拒绝服务的核心逻辑

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

 

猿人学banner宣传图

我的公众号:猿人学 Python 上会分享更多心得体会,敬请关注。

***版权申明:若没有特殊说明,文章皆是猿人学 yuanrenxue.con 原创,没有猿人学授权,请勿以任何形式转载。***

说点什么吧...