Refined Architecture是相对于 Conceptual Architecture而言的,它们是架构设计的两个层次,分别对应于“概念级”解决方案和“规约级”解决方案(如图12-1所示)。须要注意的是, RefinedArchitecture(细化架构)属于架构设计,不能与 Detailed Design(详细设计)相混滑。
1.概念架构和细化架构
1)层次:系统 用户 业务 角度:功能 约束 质量属性
2)架构=组件+交互
3)概念架构仅关注高层组件,对高层组件的“职责”进行了笼统的界定,并给出了高层组件之间的相互关系,其不涉及接口细节(只有抽象组件和抽象交互机制)。
4)在细化架构中接口占据非常核心的地位,且细化架构重视通过子系统和模块来分割整个系统,有“实在的”交互机制,如基于接口编程、消息机制或远程方法调用。
2.多视图
多视图方法是业界广泛认同的一种架构设计思路,方法种类有很多,这本书介绍的是以RUP4+1为基础改良而来,RUP4+1视图法包括:用例视图、逻辑视图、开发视图、进程视图和物理视图,本篇章介绍的多视图包括:
逻辑视图:职责划分、职责间协作
开发视图:程序单元组织
运行视图:控制流组织
物理视图:物理节点安排
数据视图:持久化设计
3.物理架构、运行架构、开发架构
- 物理架构主要设计:
- 硬件选择与物理拓扑
- 软件到硬件的映射关系
- 方案的优化
- 运行架构的设计内容:(控制流图是关键,实现控制流三种手段:进程 线程 中断服务程序)
- 确定引入哪些控制流;
- 确定每条控制流的任务;
- 控制流的创建、销毁、通信机制等;
- 控制流之间的同步关系,加锁机制等
- 开发架构的设计内容:
- 将“逻辑结构”映射为程序单元
- 要自主编写的源程序
- 可重用的库、框架
- 其他方式(shell脚本,平台配置文件)
4.数据分布
- 独立Schema
- 当一个大系统由相关的多个小系统组成,且不同小系统具有互不相同的数据库Schema定义,这种情况称为“独立Schema”。
如果可以架构师应首选此种分布策略,以减少系统间无谓的互相影响,避免人为地将问题复杂化。
- 集中(Centralized)
- 指一个大系统必须支持来自不同地点的访问,或者该系统由相关的多个小系统组成,而将持久集中化数据进行集中化的、统一格式的存储。
特点:集中存储、分布访问
3. 分区(Partitioned)
- 分区方式包括水平分区和垂直分区。
当系统要为“地域分布广泛的用户”提供“相同的服务”时,常常采用水平分区。 - 特点:两个相同,两个不同——相同的应用程序、不同的应用程序部署实例,相同的数据类型、不同的数据值。
一般垂直分区作用较小。特点:不同数据节点的Schema会有“部分字段”的差异。
4.复制(Replicated)
- 整个分布式系统中,数据保存多个副本,并且以某种机制(实时或快照)保持多个数据副本之间的数据一致性。
特点:通过数据“本地化”,提升了数据访性能;数据的专门副本,有利于针对性地进行优化;数据的专门副本,提高可管理性,加强安全控制。
5.子集(Subset)
- “子集”是“复制”的特殊方式,就是某节点因功能或非功能考虑而保存全体数据的一个相对固定的子集。
子集相对复制特点(优点):减少了跨机器进行数据传递的开销;降低了数据冗余,节省了存储成本。
6.重组(Reorganized)
- 不同数据节点因要支持的功能不同,而以不同的Schema保存数据——但本质上这些数据是同源的。数据不是直接复制,而是以“重新组织”格式进行传递或者保存。