这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天.
系统设计的几个要点
1.场景分析:需要什么系统?系统需要什么功能?程序并发量是多少?
2.存储设计:数据如何组织?SQL存储、NoSQL存储
3.服务设计:业务功能实现和逻辑整合
4.可拓展性:解决设计缺陷,提高系统鲁棒性、可拓展性
如何发现系统的瓶颈?
1.火焰图分析(性能分析)
2.链路追踪 (链路追踪是分布式系统所属的一个概念,目的就是要解决请求调用的模块、节点等,也就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如,各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等。)
3.性能测试(常用的性能测试包括:接口压力测试、负载测试、基准测试、容量测试、稳定性测试、扩展性测试等)
如何保证可用性和稳定性?
主要有以下几个方面:
链路梳理:核心链路、流量漏斗、强弱依赖
可观察性:链路追踪、核心监控、业务报警
全链路测试:压力测试、负载测试、容量测试
稳定性控制:系统限流、业务兜底、熔断升级
容灾演练:混沌工程、应急手册、容灾预案
秒杀业务 在这里以常见的业务类系统举例:秒杀系统,将从秒杀系统的特点、难点以及秒杀流程图和系统设计方面入手。
秒杀业务具有以下几个特点:瞬时流量高、读多写少、实时性要求高等。
秒杀业务具有以下挑战或难点:资源成本、反欺诈、流量监控、鲁棒性、防止超买超卖、高性能、可拓展性等。
秒杀系统设计
秒杀流程图