10-1 系统设计考点解析

Posted WinvenChang

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了10-1 系统设计考点解析相关的知识,希望对你有一定的参考价值。

一、考点聚焦:

1.什么是系统设计?
2.系统设计需要掌握哪些知识?
3.如何设计和实现一个后端系统服务的设计?

二、什么是系统设计?

System Design:
1.系统设计是一个定义系统架构、模块、接口和数据满足特定需求的过程
2.比如设计一个短网址服务、评论服务、Feed流系统、抢红包系统
3.微服务架构很多系统被按照业务拆分,需要单独设计一个系统服务
(比如公司里提供一个供其他所有业务使用的一个短网址服务)

三、系统设计的难点?

中高级工程师必经之路
1.需要具备相关领域、算法的经验,有一定的架构设计能力
2.熟悉后端技术组件,比如消息队列、缓存、数据库、框架
3.具备文档撰写、流程图绘制、架构设计、编码实现等综合能力

四、系统设计怎么答?

很多新手碰到这种问题完全不知道怎么回答
1.完全没有思路的(很多毕业生对这种问题完全手足无措)
2.有一定思路,但是回答没有重点
3.能回答上来重点,但是思路不够清晰

系统设计的要素
系统设计的三大要素:
1.使用场景和限制条件
2.数据存储设计
3.算法模块设计

如何回答系统设计题目?
按照三个要素来回答:
1.问面试官:什么场景和条件下使用?
2.设计数据存储系统
3.设计算法相关模块

要素之一:场景和限制
什么场景使用?有哪些条件?
1.这个系统是在什么地方使用的?比如短网址系统提供给站内各种服务生成短网址
2.限制条件:用户估计有多少?至少要能支撑多少用户(服务)?
3.估算并发pps:峰值qps是多少?平均qps是多少?

要素之二:数据存储设计
数据库的选型
1.按需设计数据表,需要哪些字段,使用什么类型?数据增长规模
2.数据库选型:是否需要持久化?使用关系型还是NoSQL?
3.如何优化?如何设计索引?是否可以使用缓存?

要素之三:算法模块设计
算法解决问题的核心。程序=算法+数据结构。系统=服务+存储
1.需要哪些接口?接口如何设计
2.使用什么算法或者模型?
3.不同实现方式之间的优劣对比,如何取舍?

五、延伸考点

如何回答不错,可能会问一些深入的问题(扩展、容错)
1.用户多了,qps高了如何处理?
2.数据存储多了不够存了如何处理?
3.故障如何处理?单点失败、多点失败、雪崩问题

以上是关于10-1 系统设计考点解析的主要内容,如果未能解决你的问题,请参考以下文章

10-1 系统设计考点解析

海尔电商峰值系统架构设计最佳实践

架构设计之高可扩展性

电商峰值系统架构设计--转载

10-2 系统设计真题解析:短网址系统的设计与实现

10-2 系统设计真题解析:短网址系统的设计与实现