如何全面、快速提升相关能力?秒杀系统的业务逻辑非常简单,流程清晰,在互联网“三高”场景中又非常典型,用它来学习“三高”再合适不过。
在这门专栏里,我们会为你呈现一个完整的秒杀项目流程,从需求分析、架构设计、代码实现、性能测试这四大部分,渐次带你设计出符合“三高”要求的秒杀系统,真正搞懂“三高”架构及其实现,并举一反三,轻松搭建其他满足业务需求的“三高”架构。
第一部分,需求分析:将从电商发展史和秒杀系统的业务背景入手,介绍秒杀系统的前后端功能需求和非功能需求,特别是如何通过思想实验来分析非功能需求中的“三高”并计算其指标。
通过学习这块内容,我们希望你能掌握“三高”架构的需求分析,不至于在开始之初就手忙脚乱。
第二部分,架构设计:这部分我们将为你分享秒杀系统的总体架构设计及其具体的高可用、高性能、高并发原理和方法。
你将学到如何通过领域驱动设计(DDD)来设计秒杀系统,如何利用云计算基础设施设计高可用架构,如何利用池化技术、漏斗模型、熔断和限流等技术手段提升并发能力和稳定性。
第三部分,代码实现:介绍秒杀系统的代码实现细节,希望你能学到如何利用热更新、池化技术、缓存技术、漏斗模型等高级编程技巧,提升服务的并发性能和稳定性。
第四部分,性能测试:介绍项目落地的最后环节——如何做好验收工作,希望你能学会用压力测试来做性能调优,以及了解项目上线后需要注意的事情。
├── 01 功能需求:秒杀业务背景及前端需求是怎么产生的?.mp4
├── 02 功能需求:秒杀活动信息是如何管理的?.mp4
├── 03 非功能需求:高可用、高性能、高并发的指标如何计算?.mp4
├── 04 系统架构:如何设计秒杀的系统架构?.mp4
├── 05 领域建模:DDD 原理及秒杀系统领域模型.mp4
├── 06 云架构:基础设施是如何做到高可用的?.mp4
├── 07 故障转移和恢复:如何通过主备切换缩减故障时间?.mp4
├── 08 过载保护:如何通过熔断和限流解决流量过载问题?.mp4
├── 09 KV 存储:etcd 和 Redi 高可用原理和部署方法.mp4
├── 10 Web 安全:如何解决重放攻击和 XSS 注入?.mp4
├── 11 系统参数:如何按业务场景优化网络性能?.mp4
├── 12 高性能缓存:多级缓存是如何提升服务性能的?.mp4
├── 13 高性能日志:如何提升日志性能避免 IO 瓶颈?.mp4
├── 14 流量负载均衡:LVS 和 Nginx 原理和使用方法.mp4
├── 15 池化技术:连接池和协程池为何能提升并发能力?.mp4
├── 16 漏斗模型:如何将并发流量过滤和串行化?.mp4
├── 17 技术选型:如何选择满足“三高”要求的技术?.mp4
├── 18 项目规范:Go 项目初始化都有哪些规范?.mp4
├── 19 热更新:如何解决程序升级中的稳定性问题?.mp4
├── 20 API 设计:如何使用 RESTFul 和 RPC 实现 API ?.mp4
├── 21 etcd 实战:如何使用 etcd 存储配置信息?.mp4
├── 22 Redi 实战:如何使用 Redi 缓存库存信息?.mp4
├── 23 本地缓存实战:如何使用内存缓存提升数据命中率?.mp4
├── 24 连接池:如何实现连接池减少连接所需时间?.mp4
├── 25 协程池:如何实现协程池降低 CPU 消耗?.mp4
├── 26 过滤器:如何实现用户认证和反黄牛过滤无效请求?.mp4
├── 27 限流器:如何实现熔断器和限流器防止宕机和雪崩?.mp4
├── 28 分布式事务:如何使用队列和分布式锁防止库存超售?.mp4
├── 29 单元测试:如何做单元测试和 benchmark?.mp4
├── 30 性能调优:如何使用 ab 命令和 pprof 分析性能?.mp4
├── 31 预热和压测:SLB 预热和压测的意义及方法.mp4
├── ml.md
├── 结束语 程序员成长之路.mp4
├── 开篇词 秒杀系统的“三高”架构是怎么炼成的?.mp4
├── 课程列表信息.txt
└── 文档
├── 01 功能需求:秒杀业务背景及前端需求是怎么产生的?.md
├── 02 功能需求:秒杀活动信息是如何管理的?.md
├── 03 非功能需求:高可用、高性能、高并发的指标如何计算?.md
├── 04 系统架构:如何设计秒杀的系统架构?.md
├── 05 领域建模:DDD 原理及秒杀系统领域模型.md
├── 06 云架构:基础设施是如何做到高可用的?.md
├── 07 故障转移和恢复:如何通过主备切换缩减故障时间?.md
├── 08 过载保护:如何通过熔断和限流解决流量过载问题?.md
├── 09 KV 存储:etcd 和 Redi 高可用原理和部署方法.md
├── 10 Web 安全:如何解决重放攻击和 XSS 注入?.md
├── 11 系统参数:如何按业务场景优化网络性能?.md
├── 12 高性能缓存:多级缓存是如何提升服务性能的?.md
├── 13 高性能日志:如何提升日志性能避免 IO 瓶颈?.md
├── 14 流量负载均衡:LVS 和 Nginx 原理和使用方法.md
├── 15 池化技术:连接池和协程池为何能提升并发能力?.md
├── 16 漏斗模型:如何将并发流量过滤和串行化?.md
├── 17 技术选型:如何选择满足“三高”要求的技术?.md
├── 18 项目规范:Go 项目初始化都有哪些规范?.md
├── 19 热更新:如何解决程序升级中的稳定性问题?.md
├── 20 API 设计:如何使用 RESTFul 和 RPC 实现 API ?.md
├── 21 etcd 实战:如何使用 etcd 存储配置信息?.md
├── 22 Redi 实战:如何使用 Redi 缓存库存信息?.md
├── 23 本地缓存实战:如何使用内存缓存提升数据命中率?.md
├── 24 连接池:如何实现连接池减少连接所需时间?.md
├── 25 协程池:如何实现协程池降低 CPU 消耗?.md
├── 26 过滤器:如何实现用户认证和反黄牛过滤无效请求?.md
├── 27 限流器:如何实现熔断器和限流器防止宕机和雪崩?.md
├── 28 分布式事务:如何使用队列和分布式锁防止库存超售?.md
├── 29 单元测试:如何做单元测试和 benchmark?.md
├── 30 性能调优:如何使用 ab 命令和 pprof 分析性能?.md
├── 31 预热和压测:SLB 预热和压测的意义及方法.md
├── 结束语 程序员成长之路.md
└── 开篇词 秒杀系统的“三高”架构是怎么炼成的?.md