【系统架构】架构风格专题

目录

1、定义

2、通用架构风格分类

3、架构风格比较

[4、示例:管道-过滤 VS 数据仓库)比较因素分析](#4、示例:管道-过滤 VS 数据仓库)比较因素分析)


1、定义

架构风格:描述某一特定应用领域系统组织方式惯用模式 ,反映了领域中众多系统所共有的结构语义特性,并指导如何将各个模块和子系统有效地组织成一个完整的系统。


2、通用架构风格分类

  • 数据流风格:批处理序列;管道-过滤器。
  • 调用-返回风格:主程序/子程序;面向对象风格;层次结构;客户端/服务器。
  • 独立构件风格:进程通信;事件系统。
  • 虚拟机风格:解释器;基于规则的系统。
  • 仓库风格:数据库系统;超文本系统;黑板系统。

|--------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------|
| 架构风格 | 定义 | 代表 |
| 1. 数据流 | 面向数据流,按照一定的顺序从前向后执行 | 批处理序列 管道-过滤器 |
| 2. 调用/返回 | 构件之间存在显式互相调用 关系, 在系统启动时加载已经在系统内编码 ,可直接运行。 容易实现并发处理和多任务。 树型结构,削弱了对计算的控制能力。 | 主程序/子程序 面向对象 层次结构 客户端/服务器 |
| 3. 独立构件 | 独立构件之间无直接交互(不直接调用一个过程),而是触发/广播 一个或多个事件,通过事件驱动的方式实现通信和协作。 | 进程通信 基于事件的隐式调用 |
| 4. 虚拟机 | 自定义规则 :将业务逻辑中频繁变化的部分(用户级别、折扣规则、机器学习流程)定义为可动态改变 的规则,通过灵活的 自定义规则 , 实现规则的重组 。 基于这个规则来开发构件,能够跨平台适配,业务逻辑随时改变,规则灵活定义、灵活组合。 解释器可以解释执行 用户自定义的规则。 | 解释器 基于规则的系统 |
| 5. 仓库 | 以数据为中心,所有的操作都是围绕建立的数据中心进行的 | 数据库系统 超文本系统 黑板系统 |


3、架构风格比较

|------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------|
| 架构风格 | 灵活性 | 可扩展性 | 性能 | 应用 |
| 解释器 | 将用户级别、折扣规则定义为可动态改变 的规则,通过灵活的 自定义规则 , 实现规则的重组。 基于这个规则来开发构件,能够跨平台适配,业务逻辑随时改变,规则灵活定义、灵活组合。 解释器可以解释执行 用户灵活自定义的规则(个性化折扣)。 | 折扣规则是独立的语法规则可动态改变 ,由解释器对变化的规则 进行解析,修改更容易。 加入新的用户级别和折扣规则时,通过定义新的规则实现可扩展性。 | 解释器是运行期动态绑定执行。 需要对用户级别与折扣规则进行实时解释 ,性能较差。 | 规则集、规则解释器、选择器和工作内存,用于 DSS 和人工智能、专家系统。· 解释自定义的规则,解释引擎、存储区、数据结构。* |
| 基于规则 | 将用户级别、折扣规则定义为可动态改变 的规则,通过灵活的 自定义规则 , 实现规则的重组。 基于这个规则来开发构件,能够跨平台适配,业务逻辑随时改变,规则灵活定义、灵活组合。 解释器可以解释执行 用户灵活自定义的规则(个性化折扣)。 | 折扣规则是独立的语法规则可动态改变 ,由解释器对变化的规则 进行解析,修改更容易。 加入新的用户级别和折扣规则时,通过定义新的规则实现可扩展性。 | 解释器是运行期动态绑定执行。 需要对用户级别与折扣规则进行实时解释 ,性能较差。 | 规则集、规则解释器、选择器和工作内存,用于 DSS 和人工智能、专家系统。· 解释自定义的规则,解释引擎、存储区、数据结构。* |
| 面向对象 | 面向对象的实现相对固定**** ,高度模块化,将用户级别、折扣规则等封装为对象 ,业务有变化需要修改具体的类/对象。 | 业务逻辑有变化需要修改具体的类/对象 。 加入新的用户级别和折扣规则时,需要重新定义新的对象 ,并需要重启系统。 | 在系统启动时加载 ,用户级别和折扣规则已经在系统内编码 ,可直接运行,性能较好。 | 对象是构件,通过对象调用封装的方法和属性。, |
| 隐式调用 | 独立构件之间无直接交互、不直接调用一个过程,而是触发/广播 一个或多个事件,通过事件驱动 的方式实现通信和协作。 解耦 构件之间的依赖关系,降低耦合度,提升灵活性。 | 支持构件的动态添加和移除。当系统需要新增功能时,可以通过添加监听器或订阅者的方式来扩展系统的功能。 | 能够实现异步 、非阻塞的事件处理 。 通过处理函数的并发调用 ,提高系统处理性能。性能较好 事件发布者将事件发布到事件总线上,事件订阅者可以异步处理 这些事件,从而提高系统的并发性和性能。 | 1.根据用户的注册兴趣,向用户推送其感兴趣的新闻内容; 2.修改代码后,触发语法高亮、语法错误提示、代码格式化 |
| 管道-过滤器 | 流式 数据结构,数据驱动 机制,处理流程事先确定,顺序或有限循环的交互方式,交互性差。 每个构件都有一组输入和输出,构件读取输入的数据流,经过内部处理产生输出数据流。 数据处理组件之间有依赖关系 ,前一个构件的输出作为后一个构件的输入,前后数据流关联,灵活性差。 | 数据与处理紧密关联 ,调整处理流程 需要重新启动系统。 接口适配的扩展方法。 | 需要数据格式转换 ,性能降低。 支持过滤器并发调用,性能提高。 | 1. 数据输入某个构件,经过内部处理,产生数据输出。 2. 传统的编译器包括词法分析、语法分析、语义分析、代码生成等,每个阶段产生的结果作为下一个阶段的输入。 |
| 仓库 | 数据存储在中央仓库处理流程独立 ,独立构件之间无直接交互,通过数据仓库间接交互 。 独立构件对中央数据 进行操作,支持交互式处理。 | 数据与处理解耦 合,可动态添加 和删除处理组件。 独立构件与数据仓库进行数据适配。 | 数据与处理分离,需要加载数据 ,性能降低。 数据处理组件之间一般无依赖关系 ,可并发调用,提高性能。 | 语音识别、知识推理等问题复杂、解空间很大、求解过程不确定的这一类软件系统,黑板、知识源、控制。" |


4、示例:管道-过滤 VS 数据仓库)比较因素分析

|--------------|-----------------------------------------|----------------------------------------------------------------|
| 比较因素 | 管道-过滤器风格 | 数据仓储风格 |
| 数据结构 | 流式数据 | 文件或模型 |
| 控制结构 | 数据驱动 | 业务功能驱动 |
| 交互方式 | 顺序结构、有限循环结构 | 独立构件之间无直接交互,通过数据仓库间接交互 |
| 数据处理 | 数据驱动机制,处理流程事先确定,交互性差。 | 数据存储在中央仓库处理流程独立 ,独立构件对中央数据 进行操作,支持交互式处理。 |
| 可扩展性 | 数据与处理紧密关联 ,调整处理流程 需要重新启动系统。 | 数据与处理解耦 合,可动态添加和删除处理组件。 |
| 扩展方法 | 接口适配 | 与数据仓库进行数据适配 |
| 处理性能 | 需要数据格式转换 ,性能降低。 支持过滤器并发调用,性能提高。 | 数据与处理分离,需要加载数据 ,性能降低。 数据处理组件之间一般无依赖关系 ,可并发调用,提高性能。 |

相关推荐
jane_xing8 小时前
API网关原理与使用场景详解
微服务·系统架构
麦兜*9 小时前
【Spring Boot】Spring Boot循环依赖破解:@Lazy与Setter注入的取舍指南(流程图修复版)
java·spring boot·python·spring·spring cloud·系统架构·流程图
zhoupenghui1682 天前
关于SaaS业务模式及其系统架构构建的详细解析
系统架构·saas
大咖分享课2 天前
安全信息与事件管理(SIEM)系统架构设计
安全·网络安全·系统架构·siem·威胁检测·安全信息管理·事件管理
觅食小鱼3 天前
智能家居技术简介
系统架构·智能家居
zybsjn4 天前
【实战】一次出口连接数超限事故引发的架构反思:强制代理、NAT 网关与大厂最佳实践
网络·系统架构
moton20174 天前
【软件系统架构】系列七:系统性能——路由器性能深入解析
系统架构·路由器·软考·吞吐量·软件系统架构·并发连接数·转发延迟
moton20174 天前
【软件系统架构】系列七:系统性能——计算机性能深入解析
网络·系统架构·内存·cpu·计算机性能
学习菌子5 天前
第12章:【系统架构设计师】系统架构设计-数据流风格
系统架构·软考高级·系统架构设计师·数据流风格·架构风格
Ashlee_code5 天前
美联储降息趋缓叠加能源需求下调,泰国证券交易所新一代交易系统架构方案——高合规、强韧性、本地化的跨境金融基础设施解决方案
java·算法·金融·架构·系统架构·区块链·需求分析