英文原文链接: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算法等,都是需要考虑的。