这是我参与「第五届青训营 」伴学笔记创作活动的第 4 天
今天主要做直播课的秒杀系统设计学习笔记:
系统设计方法论:为了达成某种目的,通过个体组成整体的过程
- 系统设计中我认为比较重要的是系统功能实现之后,如何分析瓶颈并优化;验证系统的可用性和稳定性。
- 系统设计于个人能提升个人能力拓展技术事业,于工作便于业务驱动开发,系统重构,突破和创新。
- 系统评估:可用性,安全性,扩展性,易用性,性能,耦合性,可维护性,伸缩性等。
- 系统设计流程:
- 如何发现系统瓶颈:火焰图分析、链路追踪、性能测试。这些应该要集合到大项目中。
- 如何保证可用性和稳定性:有如下几点。这是需要实操的部分。
进入秒杀系统设计:
- 业务特点:瞬时流量高,读多写少,实时性要求高。之后大项目也要这么分析一下。
- 秒杀的挑战:资源成本,高性能,防止超卖(这个比较难),流量管控,扩展性,鲁棒性,反欺诈。
- 场景功能:秒杀活动发布,秒杀商品详情,秒杀下单。
- 场景并发:万人参与秒杀,QPS1w+,TPS1k+。
- 存储:Localcache+Redis+Mysql。
- 服务:用户服务,风控服务,活动服务,订单服务。
- 基础组件:ID生成器,缓存组件,MQ组件,限流组件。
- 扩展:流量隔离,CDN,缓存优化,流量管控,数据库扩展,MQ扩展,Redis扩展,服务水平扩展,服务垂直扩展。
- 系统架构图:
- 秒杀流程图:重要。
总结:
学习到系统架构的知识,其中如发现系统瓶颈是应该要注意到大项目中的,同时大项目的系统架构和业务流程也应该如此呈现。