5分钟了解系统架构设计(2)
最近梳理了之前学习的架构设计相关的一些课程学习总结,将其整理成了一个大纲脑图,以每篇5分钟系列展现出来,希望对你有所帮助。
本篇,我们聚焦架构设计的理解部分。我们会从本质论、思维论、下定义和打比方四个方面来学习。
本质论
架构设计的主要目的是为了解决复杂度带来的问题。
从功能复杂度来看,主要解决的是业务发展带来的系统耦合、开发效率缓慢问题。
从非功能性复杂度来看,主要解决的是高性能、高可用、高扩展性等需求。
思维论
架构设计的关键思维是判断和取舍,而程序设计的关键思维是逻辑和实现。
真正优秀的架构都是在企业当前人力、条件、业务等各种约束条件下设计出来的,能够合理地将资源整合在一起并发挥出最大功效,并且能够快速落地。
下定义
软件架构指软件系统的顶层(Rank)结构,它定义了系统由哪些角色(Role)组成,角色之间的关系(Relation)和运作规则(Rule)。
Rank 分层:
Role 角色:
最常见的微服务拆分其实就是将整体复杂的业务系统按照业务领域的方式,拆分为多个微服务,每个微服务就是系统的一个角色。
Relation 关系:
指软件系统的角色之间的关系,对应到架构图中其实就是连接线,角色之间的关系不能乱连,任何关系最后都需要代码来实现,包括连接方式(HTTP、TCP、UDP 和串口等)、数据协议(JSON、XML 和二进制等)以及具体的接口等。
实际工作中,Rank、Role 和 Relation 都是通过业务架构图 和 系统架构图来展示的,如下所示:
业务架构图
系统架构图
Rule 规则:
指软件系统角色之间如何协作来完成系统功能,一般通过系统序列图来展示:
打比方
软件架构设计类似于大自然“设计”一个生物,通过演化让生物适应环境,逐步变得更加强大。
大自然“设计”过程:
首先,生物要适应当时的环境;
其次,生物要不断地繁殖,将有利的基因传递下去,将不利的基因剔除或修复;
第三,当环境变化时,生物要能够快速改变以适应环境变化;如果生物无法调整就被自然淘汰;而新的生物会保留一部分原来被淘汰生物的基因。
架构设计过程:
首先,设计出来的架构要满足当时的业务需要;
其次,架构要不断地在实际应用过程中迭代,保留优秀的设计,修复有缺陷的设计,改正错误的设计,去掉无用的设计,使得架构逐渐完善;
第三,当业务发生变化时,架构要扩展、重构,甚至重写;代码也许会重写,但有价值的经验、教训、逻辑、设计等(类似于生物体内的基因)却可以在新的架构中延续。
参考资料
李运华,《从0开始学架构》
刘海丰,《架构设计面试精讲》
潘新宇,《23讲搞定后台架构实战》
相关文章
- android进阶之了解Android系统与开机过程
- 5分钟了解系统架构设计(3)
- 深入了解Linux系统中IP地址的修改(如何修改linux的ip)
- Linux系统下的密码修改方法(修改密码linux)
- 应用深入了解: Linux的强大系统应用.(linux有哪些系统)
- 熟悉Linux系统,了解rz命令的用法(linux中rz命令)
- Linux 集群运维:实时监控系统(linux集群监控)
- Redis系统压力测试:改善性能的最佳方案(redis压测)
- 深入了解Linux系统的BSS段(linuxbss)
- 探索 Linux 系统时间取法之路(Linux取系统时间)
- 配置Linux系统下用户环境变量配置指南(linux用户的环境变量)
- 结构Oracle系统表深入了解:从表结构开始(oracle系统表)
- Linux系统权限漏洞:安全隐患需警惕(linux权限漏洞)
- 「深入了解 Linux 系统架构,看这份详细图解 」(linux的结构图)
- 深入了解Linux IDR:提高系统安全性(linuxidr)
- 优化Linux系统优化实战:提升系统性能的最佳实践(linux系统怎样)
- 深入了解Linux:查看系统信息(linux查看系统信息)
- 深入了解Linux系统中的log路径(linuxlog路径)
- 深入了解Oracle系统的不足之处(oracle系统的不足)
- 彻底搞懂Linux系统重启背后的真相(linux系统重启原因)
- 查看Redis日志让你快速了解系统状态的必备技能(查看redis log)
- javascript使用window.open提示“已经计划系统关机”的原因