概述
基础架构-架构设计目的简析
01 | 架构设计的误区
1、认为架构很重要,所以要做架构设计
1)例子:不做架构设计系统就跑不起来么?
答:初创公司可能没有架构设计过程,大家简单讨论下就开始编码,而且上线后运行不错。
2、认为每个系统都要做架构设计
1)例子:生搬硬套业界其他公司已有的架构
答:强行引入其他公司架构后,很可能会发现架构水土不服等各种情况,最后需要不断重构,甚至无奈推倒重来。
3、为了高性能、高可用、可扩展,所以要做架构设计
1)注意:往往持有这类观点的架构师和设计师会给项目带来巨大的灾难
2)例子:这类架构师或者设计师不管什么系统,也不管什么业务,上来就要求“高性能、高可用、高扩展”
答:结果会出现架构设计复杂无比,项目落地遥遥无期等现象,上线后发现问题却难以解决等问题。
02 | 架构设计的真正目的
1、导读
1)整个软件技术发展的历史,其实就是一部与“复杂度”斗争的历史,架构的出现也不例外
2)简而言之,架构也是为了应对软件系统复杂度而提出的一个解决方案
3)架构设计的主要目的是为了解决软件系统复杂度带来的问题。
2、架构设计的准则
1)架构设计的主要目的是为了解决软件系统复杂度带来的问题。
3、遵循准则让“新手”架构师心中有数,而不是一头雾水。
1)例子:很多需求,从哪里开始进行架构设计?
答:通过熟悉和理解需求,识别系统复杂性所在的地方,然后针对这些复杂点进行架构设计。
2)例子:时间短,任务重,架构设计需要考虑高性能、高可用、高扩展,怎么办?
答:架构设计并不是要面面俱到,不需要每个架构都具备高性能、高可用、高扩展等特点,而是要识别出复杂点然后有针对性地解决问题
3)例子:业界 A 公司的架构是 X,B 公司的方案是 Y,两个差别比较大,该参考哪一个呢?
答:理解每个架构方案背后所需要解决的复杂点,然后才能对比自己的业务复杂点,参考复杂点相似的方案。
4、遵循准则让“老鸟”架构师有的放矢,而不是贪大求全。
1)例子:认为系统一定要做到每秒 TPS 10 万
答:如果系统的复杂度不是在性能这部分,TPS 做到 10 万并没有什么用
2)例子:认为淘宝的架构是这么做的,我们也要这么做
答:淘宝的架构是为了解决淘宝业务的复杂度而设计的,我们和淘宝的业务复杂度不同,业务的用户量远不如淘宝
3)例子:XX技术很流行,我们的架构应该将XX应用进来
答:新技术不是万能的,只能解决某一方面的问题,如果我们的系统复杂度不在这方面,引入新技术没有意义
03 | 简单案例分析
1、目的
1)案例分析的目的是将“架构设计准则”的指导思想应用到实践中
2)架构设计准则:架构设计的真正目的是为了解决软件系统复杂度带来的问题
2、案例简介
1)需要设计一个大学的学生管理系统,其基本功能包括登录、注册、成绩管理、课程管理等
3、设计架构的步骤
1)先导:当我们对这样一个系统进行架构设计的时候,首先应识别其复杂度到底体现在哪里。
2)性能:该系统访问频率不高(大约2w人每天访问一次),因此性能部分不复杂,存储用MySQL,Web用Nginx即可。
3)可扩展性:功能比较稳定,可扩展的空间并不大,因此可扩展性也不复杂
4)成本:因只需几台服务器,无需太多关注。
5)高可用:
- 系统宕机2小时影响不大,因此可以不做负载均衡,更不用考虑异地多活的负载方案。
- 学生数据全部丢失,修复很麻烦,因此需要考虑存储高可靠,这里有点复杂。
- 存储高可靠的方案:
针对机器故障,设计MySQL同机房主备方案。
针对机房故障,设计MySQL跨机房同步方案。
6)安全性:
- 系统存储的信息有一定的隐私性(学生情况,但不和金融相关),采用基本的安全方案即可。
- 安全方案:Nginx提供ACL控制、用户账号密码管理、数据库访问权限控制。
4、架构设计图
04 | 思维导图
1、基础架构-架构设计目的简析思维导图
参考文献:
[1] 李运华. 从0开始学架构[M]. 极客时间, 2018.
最后
以上就是大意秀发为你收集整理的基础架构-架构设计目的简析基础架构-架构设计目的简析的全部内容,希望文章能够帮你解决基础架构-架构设计目的简析基础架构-架构设计目的简析所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复