System Design——系统设计过程(二)抽象设计

时间:2022-12-07 03:40:12

英文原文链接:https://www.hiredintech.com/classrooms/system-design/lesson/56

-----------------------------分隔符------------------------------------------------------------------------------------

系统设计过程

  • Step 1  约束和用例
  • Step 2  抽象设计
  • Step 3  理解瓶颈
  • Step 4  可扩展性设计
-----------------------------分隔符------------------------------------------------------------------------------------

Step 2 抽象设计

当全方位地思考审视了你准备设计的系统,你应该做的是更高层次的抽象设计。做这一步的目的是规划列出所有这个系统所需要的重要组件。

为了能够做好这一步,或者在面试中处理这类问题时,可以通过手绘图表的方式来做。草拟一下你所需要的主要组件,同时明确它们之间的关联关系。如果你朝着正确的方向前进了,你将很快得到收获。同时需要注意,不要在抽象设计这一步中,在某些个别方面有过深的分析,只需要草拟组件和明确关联即可。

通常,这类高层次的系统设计是各种已开发的著名技术的整合体。你必须对这些技术非常熟悉, 同时了解对这些技术的使用。在这章包括后面的章节中,就暂且假定对这些技术都有了足够的了解。我们的重点在后面的章节:可扩展性和优化瓶颈。

同样以URL缩短服务为例,来介绍如何分析抽象设计:

抽象设计:

1、应用服务层

  • 缩短URL服务
  • 重定向服务

2、数据存储层

  • 存储映射关系
  • 根据key恢复出实际URL值

目前简略分出了这两层,初步为了实现功能而做了规划,但是仍旧有一些细节的东西需要根据实际情况来进行规划。比如在执行hash的时候(如果直接存储原始URL,有时候URL过长,过大,占用存储空间;因此在这边通过hash来缩短存储与DB的值。),应该选择什么样的hash算法等,都是需要考虑的。