阅读笔记
阅读笔记
一线结构师实践指南第三编Refined Architecture阶段主要讲了细化架构、Refined Architecture总论、逻辑架构、物理架构、运行架构、开发架构、数据架构的难点和数据分布。
通过阅读,了解到了细化架构与概念架构之间的差异。接口,在细化架构中,接口占据非常核心的地位,而概念架构并不关心明确的接口定义;子系统,细化架构重视通过子系统和模块来分割整个系统,并且子系统忘完有明确的接口,而概念架构中只有抽象的组件,这些组件没有接口,只有职责;交互机制,细化架构中的交互机制应是“实在”的,而概念架构中的交互机制是“概念化”的。方案=“项目+需求+架构”的总览。因此,对于一个开发团队来说,一个《方案书》是不够来开展工作的。
在细化架构中,可以分为逻辑架构、数据架构、开发架构、运行架构和物理架构。所以在细化架构中采取了多视图的方法,多视图方法是业界广泛认同的一种架构设计思路,方法种类有很多,这本书介绍的是以RUP4+1为基础改良而来,RUP4+1视图法包括:用例视图、逻辑视图、开发视图、进程视图好物理视图,本书介绍的多视图包括:
逻辑视图:职责划分、职责间协作
开发视图:程序单元组织
运行视图:控制流组织
物理视图:物理节点安排
数据视图:持久化设计
逻辑架构包括职责划分(逻辑层、子系统、模块、关键类)和职责间协作(接口、协作关系)。划分子系统的实践策略可归纳为3种:分层的细化、分层的引入和机制的提取;要遵循4个通用设计原则:职责不同的单元划归不同子系统、通用性不同的单元划归不同子系统、需要不同开发技能的单元划归不同子系统、兼顾工作量的相对均衡,进一步切分太大的子系统。在设计接口时,应牢记:分是手段,合适目的
物理架构视图着重考虑运行软件的计算机、网络、硬件设施邓琴矿,还包括如何将软件包部署到这些硬件资源上,以及它们运行时的配置情况。另外物理架构还要考虑软件系统和包括硬件在内的整个IT系统之间是如何相互影响的,由于一部分运行时质量属性需要硬件或网络的支持,所以物理架构必须关注如何配置硬件和网络来满足软件系统的可靠性、可伸缩性、持续可用性、性能、安全性等方面的要求。物理架构设计主要有3项任务:硬件选择与物理拓扑、软件到硬件的映射关系、方案的优化。
当必须借助多条控制流并行或并发执行时,就须要设计运行架构。运行架构可能包括下列工作内容:确定引入哪些控制流、确定每条控制流的任务、处理控制流的创建、销毁、通信机制等问题、考虑控制流之间的同步关系。最常用于实现控制流的3种手段是:进程、线程和中断服务程序。
开发架构的设计的任务是:将“逻辑职责”映射为“程序单元”(要自主编写的源程序、可重用的库、框架、其他方式)、开发技术选型(开发语言、开发工具)、“程序单元”间关系(Project划分、project目录结构、编译依赖关系)
确定数据分布方案是数据架构设计的难点,数据分布方式有6种策略:独立、集中、分区、复制、子集、重组。独立适合一个大系统由相关的多个小系统组成,且不通小系统具有互不相同的数据库,如果可以,架构师应首选此种数据分布策略,以减少系统之间无谓的相互影响,避免人为地将问题复杂化。集中适用于一个大系统必须支持来自不同地点的访问,或者该系统由相关的多个小系统组成,而持久集中化数据进行集中化的、统一格式的存储。分区方式包含水平分区和垂直分区两种类型,当系统要为“地域分布广泛的用户”提供“相同服务”时,常常采用水平分区策略。在整个分布式系统中,数据保存多个副本,并且以某种机制保持多个数据副本之间的数据一致性,这就是复制方式的数据分布策略。子集是复制的特殊方式,就是某节点因功能或非功能考虑而保存全体数据的一个相对固定的子集。重组这种数据分布策略,就是不同数据节点因要支持的功能不同,而以不同的数据库保存数据。