这是我参与「第五届青训营 」伴学笔记创作活动的第 10 天。
系统设计的定义
为了达成某种目的,通过个体组成整体的过程
设计流程
场景-->存储-->服务-->扩展
- 场景分析——什么系统,需要哪些功能,多大的并发量
- 存储设计——数据如何组织,Sql存储,NoSql存储
- 服务设计——业务功能实现和逻辑整合
- 可扩展性——解决设计缺陷,提高鲁棒性、扩展性
瓶颈发现
火焰图分析 链路追踪 性能测试
保证可用性和稳定性
- 链路梳理——核心链路、流量漏斗、强弱依赖
- 可观测性——链路追踪、核心监控、业务报警
- 全链路测试——压力测试、负载测试、容量测试
- 稳定性控制——系统限流、业务兜底、熔断降级
- 容灾演练——混沌工程、应急手册、容灾预案
秒杀业务特点
- 瞬时流量高
- 读多写少
- 实时性要求高
秒杀挑战
- 资源成本
- 反欺诈
- 防止超卖
- 高性能
- 流量管控
- 扩展性
- 鲁棒性
场景
功能:
秒杀活动发布
秒杀商品详情
秒杀下单
并发︰
万人参与秒杀
QPS 1w+
TPS 1k+
存储
MySQL——>Redis——>Localcache
服务
子服务︰ 用户服务、 风控服务、 活动服务、 订单服务。
基础组件︰ ID生成器、 缓存组件 、 MQ组件、 限流组件。
拓展
数据库扩展、 Redis扩展、 MQ扩展、 服务水平扩展、 服务垂直扩展。
收获:通过本次课程的学习,让我了解到秒杀系统的复杂性,需要涉及很多关注点,比如分布式集群,数据库,缓存技术,接口设计等等,需要进行深入的研究和考虑,从而才能设计一个高效可靠的秒杀系统。同时,本课程还让我了解到了如何优化秒杀系统的处理速度,以及如何降低系统的压力,如何处理高并发的秒杀等等,受益匪浅。