文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Google 二面:聊聊系统设计思路!

2024-11-29 20:45

关注

第1步: 明确需求

不管是系统设计还是业务开发,都必须先弄清楚需求,这好比是回答别人的提问,如果连对方的问题都没有弄清楚,后面所有的回答都可能是答非所问。

因此,系统设计的第一步是彻底理解需求,从实际工作经验来看,需求主要包括 2种类型:功能性需求和非功能性需求。

(1) 功能性需求

功能性需求是指系统需要执行的功能和行为,也就是系统实实在在要完成的功能,主要包含以下几个点:

(2) 非功能性需求

非功能性需求是指系统的质量属性和性能,主要包含以下几个点:

需求是整个系统设计的风向标,因此,明确需求是整个系统设计的第一步,尽早地弄清楚需求,可以帮助我们更好的把握系统走向。

第2步: 系统容量预估

在明确了需求之后,第二步要完成的事情就是评估系统的容量,只有知道了系统的容量,才能更好的预算开发周期、人力投入、服务器投入以及其他的投入,帮助我们更好地做好后期决策。

系统容量预估,一般需要评估以下几个指标:

另外,系统设计还需要做未来增长和可伸缩性要求考虑,比如支持数据几倍的增长以及支撑几年的数据增长,以确保系统能够处理随时间推移而增加的负载。

第3步: 架构设计

在做完需求分析和容量评估这些准备工作之后,我们就可以进入真正的设计阶段,系统设计(High-Level Design,HLD)是软件开发生命周期中最重要也是最难的一个阶段。

架构设计是一个宏观上的考虑,旨在定义系统的总体结构和高层次的架构,在这个阶段需要完成系统整体设计的蓝图,帮助开发团队理解和规划系统的各个组件及其相互关系,下图是 Google的一张系统设计蓝图:

通过上述的蓝图可以看出:系统设计蓝图中包含以下主要组件:

对于每个组件,一定要考虑权衡取舍,并说明为什么选择特定的技术或架构,关于设计图的绘制时,不要过度考虑小细节,而是更多站在宏观的角度。小细节可以在每个组件的设计中去推敲。

第4步: 数据库设计

绝大多数系统是需要和数据打交道的,因此数据库的设计也就显得至关重要,数据库设计通常包括数据库选型、数据建模、数据库结构设计等。

(1) 数据库选型

数据库选型通常是根据业务场景以确定最合适的数据库类型,主要包含以下几个考虑因素:

(2) 数据建模

数据建模通常会考虑以下因素:

(3) 数据库结构设计

数据库结构设计也就是真实的表结构设计,主要需要考虑以下因素:

另外,在更宏观的角度上,还需要考虑分库分表,多活,灾备等问题。

第5步: API设计和通信协议

API和通信协议,它定义了系统内不同的组件间该如何交互以及外部客户端如何访问系统的功能,通常会考虑以下因素:

(1) 明确 API要求

(2) 选择 API类型

(3) 定义API协议

第6步:细化组件设计

在第3步中,我们分析了架构设计,但是它从宏观上的一个把握,而不会过分的关注细节,因此在此步骤中,我们需要对第3步中的一些核心组件进行更详细的设计,这里以 Java后端为例:

作为 Java后端,你需要了解自己业务的领域,比如金融,电商,财务,出行等,因为不同的领域会有一定的差异性。下面是组件细化的一些考虑点:

以下都是在后端组件中需要考虑的问题,当然,我们需要根据自己所处的角色和领域,灵活的设计。

第7步: 解决关键问题

系统设计中难免会遇到一些技术难点以及核心挑战,这些挑战主要包括可扩展性和性能,以及可靠性、安全性和成本问题。为了更好的解决这些问题,下面也给出了具体的思路:

(1) 解决可扩展性和性能问题

(2) 解决可靠性问题

可靠性是指系统即使在出现故障或错误的情况下也能正确和一致地运行的能力。以下是系统在可靠性上的一些关键考虑因素:

总结

最后,我们再总结下系统设计的 7个步骤:

有了上述 7个步骤,在做系统设计时就有一个清晰的思路,最终方案如何实施还需要结合实际的业务以及最终的权衡来定。另外,上述 7个步骤也可以帮助我们轻松的应对面试中的各种系统设计问题。

来源:猿java内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯