这是我参与「第五届青训营 」伴学笔记创作活动的第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;