系统设计 | 青训营笔记

82 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 13 天.

系统设计的几个要点

1.场景分析:需要什么系统?系统需要什么功能?程序并发量是多少?

2.存储设计:数据如何组织?SQL存储、NoSQL存储

3.服务设计:业务功能实现和逻辑整合

4.可拓展性:解决设计缺陷,提高系统鲁棒性、可拓展性

如何发现系统的瓶颈?

1.火焰图分析(性能分析)

2.链路追踪 (链路追踪是分布式系统所属的一个概念,目的就是要解决请求调用的模块、节点等,也就是将一次分布式请求还原成调用链路,将一次分布式请求的调用情况集中展示,比如,各个服务节点上的耗时、请求具体到达哪台机器上、每个服务节点的请求状态等。)

3.性能测试(常用的性能测试包括:接口压力测试、负载测试、基准测试、容量测试、稳定性测试、扩展性测试等)

如何保证可用性和稳定性?

主要有以下几个方面:

链路梳理:核心链路、流量漏斗、强弱依赖

可观察性:链路追踪、核心监控、业务报警

全链路测试:压力测试、负载测试、容量测试

稳定性控制:系统限流、业务兜底、熔断升级

容灾演练:混沌工程、应急手册、容灾预案

秒杀业务 在这里以常见的业务类系统举例:秒杀系统,将从秒杀系统的特点、难点以及秒杀流程图和系统设计方面入手。

秒杀业务具有以下几个特点:瞬时流量高、读多写少、实时性要求高等。

秒杀业务具有以下挑战或难点:资源成本、反欺诈、流量监控、鲁棒性、防止超买超卖、高性能、可拓展性等。

秒杀系统设计

image.png

秒杀流程图

image.png