美文网首页
系统设计的一般步骤

系统设计的一般步骤

作者: classtag | 来源:发表于2017-04-21 18:03 被阅读309次

    本文仅为本人总结之用,高手略过。

    我们屁颠颠地从老板(产品)那边拿到一个需求,公司马上要搞促销,所以要为这次活动新建一个秒杀系统。拿到这样的需求,你会怎么入手?接下来我不会告诉你怎么做一个秒杀系统,只会介绍系统设计的一般性步骤,不知道是哪位高人总结的叫着SNAKE分析法。

    Scenario 场景

    这是每个系统设计的第一步,搞清楚我们的系统场景,为什么服务。我们的业务场景是什么样子的,都有哪些角色,怎么个流程?其实在这一阶段就是列出系统需要实现的功能有哪些。
    接着我们把功能根据优先级和核心功能进行排序。比较互联网很快,我们先搞一个Version1.0上去,再来优化。

    Needs 需求

    很多人被这个中文翻译搞懵逼了,你不是在第一阶段就讲过需求吗?这里的needs是说咱们系统设计出来要满足什么样的用户量,需要咱们设计一个多么吊&牛X的系统。最好这个时候能拿出纸和笔来计算一下,咱们的DAU、并发量、QPS、TPS、峰值。Pls,remember:我们需要的是一个合适的系统,绝对不是一个可以满足100年都可用的巨牛逼的系统。

    Application 应用

    这一阶段,我们要做的是将我们的功能进行划分,分组成不同的模块。这样后边我们就可以团队分工开发,团队协作。
    接着我们需要考虑的是关键的一些算法。比如缓存算法、分库算法等。
    Service + Algorithm

    Kilobyte 数据

    • 关系型数据库SQL Database
      • 小调查:Twitter的哪些信息适合放在关系型数据库中?
      • 用户信息 User Table
    • 非关系型数据库 NoSQL Database
      • 小调查:Twitter的哪些信息适合放在非关系型数据库中?
      • 推文 Tweets
      • 社交图谱Social Graph(followers)
    • 文件系统File System
      • 小调查:Twitter的哪些信息适合放在文件系统中?
      • 图片、视频Media Files

    讲到这个地方其实我想总结一句:

    • 程序 = 算法 + 数据结构
    • 系统 = 服务 + 数据存储

    Evolve 改进

    这个阶段就是做优化和维护工作了,我们最好根据实际的需要去优化系统,满足系统不远将来的增长。选择一个最合适的方案而不是一个最好的方案。

    相关文章

      网友评论

          本文标题:系统设计的一般步骤

          本文链接:https://www.haomeiwen.com/subject/kszdzttx.html