zoukankan      html  css  js  c++  java
  • 1.系统设计-概要

    2015-10-04周日7:00

    How to design a system?

    Full-statck tech solution for startups

    System design is 100% waiting for you in the job/promotion interview.

    2.What’s a good design?

    *Healthiness

      Execution

      Communication

    *Simplicity

      No more ; no less

      Understandable

    3.学习目标

    After class_1,you can answer

    a. Fundamental questions in system design interviews

    Please design the system
    Please evaluate query per second
    Please scale your system

    b.Design Netfix / YouTube / Spotify

    Uber,Google,Alibaba
     

    After class_2,you can answer

    a.Design data with class and inheritance

    b.Design user system

    c. Design payment system

    After class_3,you can answer

    *Design crawler

    *Design thread-safe consumer and producer

    * Design TinyUrl

    After class_4,you can answer

    *What happens when you visit www.google.com in your brower?

    * How to increase visting speed of  a webpage?

    *Design ‘’秒杀“System?

    *Design rate limiter

    After class_5,you can answer

    *Design distributed file system (GFS) and database(BigTable)?

    *Calculate word appearance /inverted index/ anagrams with MapReduce

    After class_6,you can answer

    *Design Twitter / Instagram /Facebook

    *Design WhatsAPP/Facebook Chat

    After class_7,you can answer

    *Design typeahead /instant search

    *Achievement system

    After class_1,you can answer

    4.Please design ‘Netflix”

    如何设计视频网站

    一、方案:界面

    第一步. 根据需求列出功能

    a. 登陆/注册

    b.播放

    c. 电影推荐系统

    第二步.排序

    播放视频

       *频道

       *电影频道

       * 在频道中播放电影

    二、必需:限制/ 前提

    1.用户指标(系统设计最重要的指标)

    500 0000 日活跃用户(问面试官)

    2.预测

    *用户量:

    平均用户量= 日活跃用户量/(每日秒数 * 平均在线时间)
    
     =5 ,000,000/{ (24*60*60)*(30*60)}
     = 104,167
    假设平均在线时间是30分钟
    
    高峰用户量 = 平均用户量*6 = 625,000
    系统上线时的用户量 = 高峰用户*2 = 1,250,000
    
    

    *带宽:

    每个用户带宽 = 3 mbps
    最高带宽 = 1,250,000 * 3 mbps = 3.75 TB/s
    

    * 内存:

    每个用户占内存 = 10kb
    每天内存 = 5,000,000*10*2(假设系统上线后用户量加倍)= 100GB
    

    *硬盘容量:

    总的电影量 = 14,000
    总的电影空间 = 14,000 * 50GB (高清)= 700TB

    三、应用程序:服务/模块

    1.对每个请求增加一个 服务

    2.合并服务

    image

    四、数据设计

    1. 对于一个请求单独用一个数据

    2.选择不同数据模型

    image

     

    五、进化(目前为止你只是完成了基本设计,接下来你需要进化一下)

    1. 分析

    是否能抗压力
    是否能增加模块
    是否能深层更改(比如文件系统更换)
    
    从不同角度分析:
    性能
    扩展性
    健壮性

    2.Go back by evolving accordingly(真不懂)

    5.总结:

    Crack a design in 5 steps

    *Scenaro: case/interface (方案:

    *Necessary: constrain/hypothesis(必须:前提))

    *Application : service /algorithm(应用程序)

    *Kilobit: data(千比特;数据)

    *Evolve(进化:)

    snake

    6.个人评测

    编程(1/4)

    image

    设计(2/4)

    image

    理解/学习(3/4)

    image

    总结/ 表达/教学(4/4)

    image

    image

    2015-10-04 :现在的我{ 2+1+3+3} = 9

    7.举例:设计推荐模块

    image

    采用snake 模式作答:

    1.Scenario : interface

    image

    2.Necessary:constrain/hypothesis

    (每十分钟给用户更换推荐)

    image

    3.Alogrithm +Data

    image

    如果要更新用户推荐,改算法需要时每个用户 200ms.高峰用户是1,250,000

    所以max capablity = 5qps

    4.Evolve

    性能,扩展性,健壮性

    image

    a. 提高性能

    image

    image

    扩展多个推荐模块

    image

    image

    8.  7节课的内容

    image

  • 相关阅读:
    python 安装impala包
    Hive表导出成csv文件
    linux sed命令详解
    Android--Sensor传感器
    Android--ColorMatrix改变图片颜色
    Android--Matrix图片变换处理
    Android--使用Canvas绘图
    Android--从系统Camera和Gallery获取图片优化
    Android--从系统Gallery获取图片
    Android--Tween补间动画
  • 原文地址:https://www.cnblogs.com/chaoren399/p/4854468.html
Copyright © 2011-2022 走看看