[一线架构师实践指南]Refined Architecture阅读笔记
多视图方法有两个方面的实际意义:1、利于思考(因为分而治之的思维方式) 2、便于交流(因为在一定程度上分离了涉众关注点)
划分子系统实践策略可归纳为3种:1、分层的细化 2、分区的引入 3、机制的提取。这三种手段不是相互替代的关系,而是相辅相成的关系。实践中,架构师应三管齐下,综合运用。
子系统划分三种方法背后的通用设计原则:1、职责不同的单元划归不同的子系统。2、通用性不同的单元划归不同子系统。3、需要不同开发技能的单元划归不同子系统。4、兼顾工作量的相对均衡,进一步划分太大的子系统。
“分”是手段,“合”是目的。不能“合”在一起支持更高层次功能的模块没有作用。我们必须把模块放在协作的上下文之中进行考虑。所以在设计接口时不能直接设计接口,而应该协作决定接口。
过程串联:第一步,根据当前理解划分。质疑驱动的逻辑架构设计整体思路,是从运用分层的细化、分区的引入、机制的提取进行子系统划分开始的。第二步,找到某功能参与单元。若找不到或明显缺单元,就可以直接返回第一步了,以补充遗漏的职责单元。第三步,让它们协作完成功能。研究第二步找到的参与单元之间的协作关系,看看能否完成预期,完成的怎么样?第四步,质疑并推进设计的深入。通过质疑“对不对”和“好不好”,可以发现新职责,或者调整协作方式。这意味着,第一步的子系统切分方案被调整、被优化......如此循环。
每个架构师都应该懂得:增加硬件=增加计算能力≠软件的业务服务能力增强
物理架构设计主要有3项任务:1、硬件选择与物理拓扑;2、软件到硬件的映射关系;3、方案的优化。
很多系统为了应对复杂的业务逻辑或复杂的互操作逻辑(含硬件交互),或者为了优化关键资源使用效率,而必须借助多条控制流并行或并行执行时,就须要设计运行架构。
在实践中,最常用于实现控制流的手段有3种:1、进程。进程是重量级控制流,既是处理机资源的分配单位,又是其他计算机资源的分配单位。2、线程。线程是轻量级控制流,仅仅是处理机资源的分配单位。一个进程内可以包含多个线程,后者共享前者的资源;但处理机资源例外,线程是独立的处理机资源的分配单位。3、中断服务程序。中断服务程序也是常见的控制流实现机制。当没有OS的支持却要实现并发时,它非常重要。
一般而言,开发架构的设计应完成下列工作:1、将“逻辑职责”映射为“程序单元”。(要自主编写的源程序;可重用的库、框架;其他方式:如Shell脚本、平台支持下的配置文件)2、开发技术选型。(开发语言。开发工具。)3、“程序单元”间关系。(Project划分(可选);Project目录结构;编译依赖关系)。