zoukankan      html  css  js  c++  java
  • 系统设计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. 鲁棒性
  • 相关阅读:
    当老板如何带团队?
    创业者第一法宝-了解自己
    交流才能交易,交易才能交心
    集合框架
    MySQL一些命令语法
    JS组成整理
    git中可以pull但是push提示Everything up-to-date的情况
    循环判断以及文件的使用--练习1
    Hello World !
    linux文件权限修改
  • 原文地址:https://www.cnblogs.com/zcy-backend/p/6682286.html
Copyright © 2011-2022 走看看