这是我参与「第五届青训营」伴学笔记创作活动的第 10天。
系统设计是根据系统分析的结果,运用系统科学的思想和方法,设计出能最大限度满足所要求的目标 (或目的) 的新系统的过程。进行系统设计时,必须把所要设计的对象系统和围绕该对象系统的环境共同考虑,前者称为内部系统,后者称为外部系统,它们之间存在着相互支持和相互制约的关系,内部系统和外部系统结合起来称作总体系统。因此,在系统设计时必须采用内部设计与外部设计相结合的思考原则,从总体系统的功能、输入、输出、环境、程序、人的因素、物的媒介各方面综合考虑,设计出整体最优的系统。进行系统设计应当采用分解、综合与反馈的工作方法。不论多大的复杂系统,首先要分解为若干子系统或要素,分解可从结构要素、功能要求、时间序列、空间配置等方面进行,并将其特征和性能标准化,综合成最优子系统,然后将最优子系统进行总体设计,从而得到最优系统。在这一过程中,从设计计划开始到设计出满意系统为止,都要进行分阶段及总体综合评价,并以此对各项工作进行修改和完善。整个设计阶段是一个综合性反馈过程。系统设计内容,包括确定系统功能、设计方针和方法,产生理想系统并作出草案,通过收集信息对草案作出修正产生可选设计方案,将系统分解为若干子系统,进行子系统和总系统的详细设计并进行评价,对系统方案进行论证并作出性能效果预测。
系统设计方法论
为什么要做系统设计?
个人?个人能力提升;拓展技术视野。
工作?业务驱动;系统重构;突破和创新。
如何评估一个系统?
可用性;扩展性;安全性;易用性;可维护性;性能;耦合性;伸缩性;
系统设计定义
系统:关联的个体;规则运作;组成工作的整体。
设计:设想和计划;目的;过程安排。
为了达成某种目的,通过个体组成整体的过程。
如何做系统设计?
4S分析法
- 场景分析 (Scenario):什么系统,需要哪些功能,多大的并发量
- 存储设计 (Storage):数据如何组织,Sql存储,NoSql存储
- 服务设计 (Service) :业务功能实现和逻辑整合
- 可扩展性 (Scale) :解决设计缺陷,提高鲁棒性、扩展性
如何分析系统瓶颈和优化?
- 火焰图分析
- 链路分析
- 全链路压测
如何验证系统的可用性和稳定性?
- 链路梳理
- 可观测性
- 全链路测试
- 稳定性控制
- 容灾演练
电商系统业务介绍
基本概念
- SKU(Stock Keeping Unit)库存量单元 --- SKU是商品下的一个分类属性(商品下一个颜色或者尺码)
- SPU(Standard Product Unit)标准化产品单元 --- SPU是一个商品编码
一个SPU可以对应多个SKU,简单的说: SPU就是一个iPhone6s, SKU就是银色iPhone6s、粉色iPhone6s
秒杀业务的特点:
- 瞬时流量高
- 读多写少
- 实时性要求高
秒杀的挑战
- 资源有限性
- 反欺诈
- 高性能
- 防止超卖
- 流量管控
- 扩展性
- 鲁棒性
如何设计秒杀系统?
- 场景(Scenario)
- 存储(Storage)
- 服务(Service)
- 扩展(Scale)