这是我参与【第五届青训营】伴学笔记创作活动的第10天,
系统设计方法论
为什么要做系统设计:工作方面业务驱动、系统重构、突破和创新,为了解决问题
评估一个系统:可用性、安全性、性能等方面
系统设计定义:系统是一个关联的个体,按照规则运作组成工作的整体,系统设计就是为了达到某种目的,通过个体组成整体的过程
系统设计标准流程:
1.场景分析
2.存储设计
3.服务设计
4.可扩展性
发现系统的瓶颈:火焰图分析、链路追踪、性能测试
电商秒杀业务介绍
电商三要素:人、货、场
商品:具有交易价值和属性的信息载体
秒杀业务的特点:
-
瞬时流量高
-
读多写少(查看商品)
-
实时性要求高
秒杀的挑战:资源成本、高性能、扩展性、反欺诈、流量管控等
如何设计秒杀系统
1.场景
- 秒杀活动发布
- 商品详情
- 秒杀下单
以及并发量
2.存储
三级存储:底层MySQL;中层Redis;高层Localcache
3.服务
-
子服务
-
基础组件:ID生成器、缓存组件、MQ组件、限流组件
4.扩展
流量隔离、CDN、缓存优化、流量管控、数据库扩展等
系统架构图
用户层:WEB、IOS、Android
接入层:Nginx
应该层:组件和场景
基础层:存储
课程实践
代码实践
课程总结
对高性能高并发系统提炼的核心点:
1.服务无状态:横向扩展
无状态:就是当前的应用不存储状态
2.批量写入(降低系统压力非常有效的一个方式,在非常大的Mysql写入都用到了批量写入)
3.最终一致性:用Redis做缓存等都会产生新的副本,在过程中数据可能会有短暂的不一致,但是最终都会达到一致性