这是我参与「第五届青训营 」伴学笔记创作活动的第 6 天
今日课程介绍了系统设计的方法论,并且用一个商品秒杀系统的设计作为例子进行了讲解。
系统的评估
性能、可用性、安全性、扩展性、易用性、耦合性、伸缩性、可维护性......
系统设计的标准流程
本节课介绍了系统设计中的 4S 分析法:
-
场景分析(Scenario)
什么系统,需要哪些功能,多大的并发量
-
存储设计(Storage)
数据如何组织,Sql存储,NoSql存储
-
服务设计(Service)
业务功能实现和逻辑整合
-
可扩展性(Scale)
解决设计缺陷,提高鲁棒性、扩展性
秒杀系统设计
-
场景分析
功能上包括秒杀活动的发布,商品详情展示和下单的相关操作;在并发量方面考虑有一万左右用户参与秒杀,对应 QPS 1w+, TPS 1k+。
-
存储设计
考虑 MySQL->Redis->本地内存 的数据存储流程,结合实际业务设计表结构,以及相关的分库分表、分布式容灾、未来的扩展等。
-
服务设计
-
功能服务
包括用户服务、风控服务、活动服务、订单处理等
-
基础服务
包括 ID 生成、缓存、消息队列组件、限流组件等
-
-
扩展
未来可以从 CDN 、流量隔离等方面分散请求压力,通过缓存和消息队列对流量削峰等;数据库方面也可以进行分布式扩展;也可以根据业务进行水平或垂直扩展。
总结
本节课主要是思路上的指导,为我今后考虑大型项目整体架构提供了一种新的思考方式。尽管大型系统中的很多组件不一定都能掌握,但是在了解基本概念后,也可以结合整个系统设计的视角更好地融入团队开发。