• 系统设计system design答题模板


    1. 讨论用户是谁
    电话、网络、p0 (mvp) 要求是什么

    2. 根据用户讨论feature
    功能性需求:eg用户应该能够发布新推文,用户应该能够关注其他用户
    非功能需求:
    一致性还是可用性?Consistency or Availability?
    实时还是批量?Real-time or batch?
    重读还是重写?Read heavy or write heavy?

    3. 问一下系统需要handle 的traffic, 问问需不需要进行计算。 
    延迟估计Latency estimation
    存储量
    QPS


    4. 根据feature讨论系统需要存储和serve哪些data, 这些data用什么存, 讨论sql/nosql/cache/object storage/hdfs取舍
    Memory内存 vs Storage硬件
    partition分区
    build index建立索引
    Avoid hotspot避开热点
    Avoid consistently updating one record避免持续更新一条记录
    nosql的考量:Main/Follower主/从,Async vs sync replication异步与同步复制,Shard key分片键,Index指数
    cache缓存的考量:Cacheability. I.e. data repetition.可缓存性。 IE。数据重复,Memory requirement内存要求,Staleness effect陈旧效应

    5. 根据数据,设计service。画图。
    API设计(看情况,可能不需要)

    数据库字段设计(看情况,可能不需要)
    throttling节流, auth身份验证

    6. work through一个use case, 把所有service连起来, 同时修改刚才画好的图。
    eg做uber eats, 讨论用户要order 一个食物,到餐馆接到订单, 到司机接到订单。。。。

    7. 讨论use case细节, 这时候面试官全程都会drive你的design的,不会丢你在那里自言自语。
    eg比如 uber eats司机进入某个区域怎么识别啊, cache里怎么存啊。

    8. 面试官会问, 某些环节挂掉了,怎么处理。
    无非就是1. 要么replica, master slave, active-passive 或者
    2.周期存snapshot 在磁盘上,然后存action log... 挂了可以重新恢复。。。

    9. 一些环节怎么scale... multi instance, partition 这些呗。。 偶尔说说service mesh...

     

    转自一亩三分地:https://www.1point3acres.com/bbs/thread-537998-1-1.html

  • 相关阅读:
    主流负载均衡器LVS、Nginx、HAProxy介绍
    shell脚本加密软件shc
    Linux系统安全配置相关
    Linux系统split对tar文件进行分片和压缩
    kubernetes组件详解和创建POD流程
    构建RPM之SPEC详解
    Python推荐系统框架:RecQ
    Python常用库-Psutil
    使用NLP从文章中自动提取关键字
    模糊字符串匹配:FuzzyWuzzy
  • 原文地址:https://www.cnblogs.com/immiao0319/p/15415867.html
Copyright © 2020-2023  润新知