GO手把手教你做系统设计day10 | 青训营笔记

38 阅读2分钟

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

系统设计的那些问题

为什么要做系统设计

个人

For面试

个人能力提升

拓展技术视野

工作

业务驱动

系统重构

突破和创新

如何评估一个系统

可用性

易用性

可维护性

安全性

扩展性

耦合性

性能

伸缩性

系统设计的定义

系统 关联的个体

规则运作

组成工作的整体

设计

设想和计划

目的

过程安排

定义:为了达成某种目的,通过个体组成整体的过程

如何做系统设计

场景分析(Scenario )

什么系统,需要哪些功能,多大的并发量

存储设计(Storage )

数据如何组织,Sql存储,NoSql存储

服务设计( Service )

业务功能实现和逻辑整合

可扩展性(Scale )

解决设计缺陷,提高鲁棒性、扩展性

如何保证可用性和稳定性

链路梳理

核心链路

流量漏斗

强弱依赖

可观测性

链路追踪

核心监控

业务报警

全链路测试 压力测试

负载测试

容量测试

稳定性控制 系统限流

业务兜底

熔断降级

容灾演练 混沌工程

应急手册

容灾预案

秒杀业务特点

瞬时流量高

读多写少

实时性要求高

秒杀的挑战

资源成本

反欺诈

高性能

防止超卖

流量管控

扩展性

鲁棒性

场景( Scenario )

功能:

秒杀活动发布

秒杀商品详情

秒杀下单

并发︰ 万人参与秒杀

QPS 1w+

TPS 1k+

存储(Storage)

Localcache

Redis

MySQL

服务(Service )

子服务∶

用户服务

风控服务

活动服务

订单服务

基础组件:

ID生成器

缓存组件

MQ组件

限流组件

扩展(Scale )

流量隔离

CDN

缓存优化

流量管控

数据库扩展

Redis扩展

MQ扩展

服务水平扩展

服务垂直扩展