系统设计1:概述

阅读材料:

https://www.zhihu.com/question/20059632

https://www.zhihu.com/question/23602133

https://www.ibm.com/developerworks/cn/web/1103_zhaoct_recommstudy1/

http://blog.csdn.net/hguisu/article/details/7962350

系统设计是定义结构、组件、模块、接口和数据以满足特定需求的过程。

一个好的新系统:

  • 模块内执行正确、效率高
  • 模块间通信顺畅
  • 不过于复杂,考虑全面
  • 易于理解

系统设计可以分为五步:

  1. 场景
  2. 限定条件:用户量、请求量、高峰期、数据规模……
  3. 服务:完成功能
  4. 数据
  5. 未来改进

如何设计一个Netflix

场景:

  1. 枚举:播放电影、注册登录、电影推荐
  2. 排序:按重要程度

限定条件:

  1. 问必要数据:日活,电影总数等等
  2. 预测
    • 同时在线用户数=日活/每天秒数*平均在线时长
    • 峰值用户=同时在线用户*6(1~10)
    • 3个月后峰值用户=峰值用户*2(问)
    • 每个用户流量=3MB/user
    • 峰值流量=每个用户流量*峰值用户数
    • 每个用户占用内存=3KB
    • 每天总内存=每个用户内存*日活
    • 总存储=电影数*50G(多个版本)

服务:

  1. 重放case,每个case一个服务
  2. 合并服务

数据:

  1. 为每个请求在服务下挂接数据
  2. 选择数据类型

未来改进:

  1. 性能更快
  2. 功能更多
  3. 更细节
  1. 性能
  2. 扩展性
  3. 鲁棒性
原文地址:https://www.cnblogs.com/zcy-backend/p/6682286.html