系统设计 | 青训营笔记

77 阅读2分钟

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

一、本堂课重点内容:

首先,系统是什么?根据《系统架构》一书的定义,系统是由一组实体和这些实体之间的关系所构成的集合,其功能要大于这些实体各自的功能之和。

从产品作出原型,到研发编程实现,中间有巨大的鸿沟。越复杂的业务需求,这条鸿沟就越大。一般而言,我们至少还要有两个步骤:业务分析与架构设计。

二、详细知识点介绍:

01.系统设计方法论 1.1系统的评估

有这些方面: 可用性 扩展性 安全性 易用性 耦合性 性能 可维护性 伸缩性

1.2 如何做系统设计

1.2.1场景分析(Scenario) 什么系统,需要哪些功能,多大的并发量

1.2.2存储设计(Storage) 数据如何组织,Sql存储,NoSql存储

1.2.3服务设计(Service) 业务功能实现和逻辑整合

1.2.4可扩展性(Scale) 解决设计缺陷,提高鲁棒性、扩展性

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

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

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

主有连路测试: 压力测试、负载测试、容量测试

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

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

02.电商秒杀业务介绍

2.1场景: 功能: 秒杀活动发布、秒杀商品详情、秒杀下单

并发: 万人参与秒杀、QPS 1w+、TPS 1k+

2.2 存储: mysql——》redis——》localcache

2.3服务 子服务: 用户服务、风控服务、活动服务、订单服务

四、课后个人总结:

系统设计十分有价值,一个好的系统设计会带来事半功倍的效果。本次我们学习设计了秒杀系统。我们把系统分为四个层面,分别是基础层:mysql、redis、rocketMQ;应用层:id生成器、限流组件、MQ生成器、Cache组件;接入层:Nginx;用户层:web、ios、android;