系统设计 | 青训营笔记

112 阅读3分钟

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

秒杀流程图