知识卡片
基于空间的架构与PAC架构的脆弱性
内容
这两种架构模式相对小众,脆弱性也各有各的特殊性。基于空间的架构用分布式内存数据网格取代数据库,把应用数据保存在内存中并在所有活动的处理单元间保留副本,处理单元可根据负载动态增减,以此消除数据库瓶颈、换取近乎无限的扩展能力;它由处理单元(Web组件+后端服务逻辑)和虚拟化中间件(消息网格、数据网格、处理网格、调度管理器)两大组件构成。但这种架构的脆弱性并不在于结构本身有明显缺陷,而在于团队能力与技术成熟度的错配——书中指出其脆弱性主要表现为工程开发相对复杂,很多困难来自对相关技术和产品本身的不熟悉,也就是说,这类架构的风险更多是采用门槛和团队经验带来的实施风险,而非架构设计层面的固有漏洞。PAC架构(Presentation-Abstraction-Control)以合作Agent的树状层次结构定义交互系统:顶层Agent负责核心功能(如访问数据仓库的接口)、底层Agent负责表达独立的语义概念并直接与用户交互(如控制柱状图、饼图等具体视图)、中层Agent负责沟通顶层和底层(中层本身也可以再分层,高级别中层管理低级别中层,如同树的非叶子节点)。它的脆弱性直接来自”每个Agent都要配齐表示、抽象、控制三个组件”这个设计要求:一是每个Agent都必须设置这三个组件,天然增加了系统复杂性;二是要让众多Agent有序高效协作运行,离不开一个足够复杂的控制组件本身来承担协调职责;三是Agent之间需要频繁传递信息,随着Agent数量和层级增多,通信开销会大幅上升、拖累系统效率——这三点脆弱性本质上是同一个代价的三种表现:为了让每个Agent保持职责内聚(表示/抽象/控制分离),系统必须为”内聚”支付协调成本,Agent越多、层级越深,这个成本就越高。
参考来源
- 位置:《软件架构理论与实践》第21章《软件架构脆弱性》"21.3.10 基于空间的架构"、"21.3.11 PAC架构"节(源文件:_epub-src/OEBPS/text00178.html)
- 结论依据:原文说明基于空间的架构"工程在开发上相对复杂,很多困难存在于对技术和产品的不熟悉",PAC架构"各个Agent都需要设置表示、抽象和控制三个组件,从而增加了系统的复杂性……各个Agent之间的信息需要传递,这大大增加了整个系统的通信开销",直接支撑本卡片结论。
- 原始内容:基于空间的架构模式的工程在开发上相对复杂,很多困难存在于对技术和产品的不熟悉……各个Agent之间的信息需要传递,这大大增加了整个系统的通信开销,从而降低了系统的效率。