架构风格

架构风格

1)数据流体系结构风格

  1. 批处理体系结构风格 — 每个处理步骤是一个单独的程序,每一步必须在前一步结束后才能开始,并且数据必须是完整的,以整体的方式传递。基本构件是独立程序。
    特点:1)每个处理步骤是单独的一个程序 2)必须前一个步骤完成后才能进行下一步 3)数据整体传递,不允许增量处理。 4)构件是独立的处理程序
    优点:1)结构简单清晰 2)适用于大批量、稳定、重复的处理。 3)便于分工开发、分布执行。
    缺点: 1) 高延迟 ,无法实时处理。 2)无交互能力,容错差。 3)一个出错,真个流程重跑。
    应用:1)银行批量对账 2)工资批量计算 3)日志批量处理 4)数据批量转换 5)传统报表生成。
  2. 管道-过滤器体系结构风格 — 基本构件是过滤器,连接件是数据流传输管道,将一个过滤器的输出传到另一个过滤器的输入。
    特点:1)构件:过滤器-事件处理单元 2)连接件-管道 数据流传输 3)数据从源经过一串过滤器流向终点。 4)过滤相互独立,只看输入和输出。
    优点:1)高内聚、低耦合、组件和复用。 2)支持并行执行,吞吐量高 3)易于扩展、重组处理流程。
    缺点:1)不适合交互式、事务型系统 2)难以处理复杂控制流 3)格式转换成本高。
    应用:1)编译器(语法->词法->语义->目标代码) 2)数据 ETL流程 3)图像处理流水线、信号处理。

2) 调用/返回体系结构风格

  1. 主程序/子程序风格 — 一般采用单线程控制,把问题划分为若干各需要处理的步骤。构件即主程序和子程序,调用关系具有层次性。
    特点:1)单线程控制流 2)按功能拆分成多个子程序 3)层次化调用 4)数据共享、顺序执行。
    优点:1)结构清晰,易于开发和理解。 2)符合结构化程序设计思想
    缺点:1)不易扩展,修改影响范围大。 2)数据共享易出错 3)不支持并发,复用性差。
    应用:1)早期的结构化程序 2)简单的控制类小程序。
  2. 面向对象体系风格 — 使用抽象数据类型概念,把数据和需要操作的方法封装在一个类或者对象中。
    特点:1)数据和操作封装在对象中。 2)基于集成、多态和封装。 3)对象通过消息互相传递。
    优点:1)复用性强 2)可维护、可扩展性好。 3)数据安全性高。
    缺点:1)设计复杂,开销大 2)过度设计会导致性能下降。
    应用:1)各类业务系统 2)GUI桌面系统 3)复杂一业务逻辑系统。
  3. 层次型体系结构风格 — 下层为上层提供服务,没层最多影响自己的上下两层。
    特点:1)系统分为多层,下层为上层提供服务 2)每层只与相邻层交互。 3)典型:表示层->业务层->数据访问层->数据层。
    优点:1)耦合度低,便于替换某一层 2)利于分工、标准化 3)可移植性性好 可以维护性好。
    缺点: 1)层过多会导致性能下降 2)难以做到极高的灵活性。
    应用:1)B/S 系统web架构 2)3层C/S 架构 3)绝大多数企业应用。
  4. 客户端/服务器体系结构 — 3层c/s 比 二层 增加了应用服务器。
    特点: 1)分为客户端和服务端 2)二层C/S 客户端数据库服务器 3)三层C/S 客户端+应用服务器+数据库服务器。
    优点:1)交互能力强,快速响应 2)数据安全、事务能力强。 3)三层分担压力,易于扩展。
    缺点:1)客户端需要按照部署 ,维护成本高。 2)跨平台差 3)不适合大量用户访问。
    应用:1)传统财务软件 2)专用管理系统 。 3)内网办公系统。

3)以数据为中心的体系结构风格

  1. 仓库体系结构风格。 仓库是存储和维护数据的中心场所。有两种不同的构件:1)中央数据仓库 2)对数据仓库操作的独立构件。 连接件即为仓库与独立构件之间的交互。
    特点:1)核心是中央数据仓库 2) 其他独立构件对仓库进行读写 3)分为被动仓库和主动仓库
    优点: 1)数据集中管理,一致性好 。2) 构件共享数据,一致性强 3)便于数据备份和恢复。
    缺点: 1) 仓库瓶颈明显 2)演化困难,数据结构编号影响大。
    应用: 1)数据库管理系统 2)编译器符号表控制 3)配置中心、数据中台
  2. 黑板体系结构风格。黑板架构是一种求解问题的模型,适用于解决复杂的非结构化问题。可以运用不同的知识源,使得问题的表达、组织和求解更容易。
    特点:1)中央数据共享黑板 2)多个知识源独立监听黑板变化 3)无之间调用,有黑板状态驱动求解。
    优点:1)适合非结构化 ,不确定性问题。 2)多知识源协同,容错性好 3)可增量求解。
    缺点:1)控制逻辑复杂 2)难以测试与调试 3)效率低
    应用:1)语音识别、图像理解 2)专家系统、信号解释 3)复杂规则与决策系统。

4) 虚拟机体系结构风格

  1. 解释器体系结构风格 — 典型的例子是专家系统。具有解释风格的软件中有一个虚拟机,缺点是运行效率低。
    特点:1)模拟一台虚机执行脚本和规则 2)包括解释引擎、中间代码、状态环境 3)便解释变执行,不生成目标程序。
    优点:1)灵活性强,规则可以修改 2)可移植性好 3)适合多变化业务逻辑
    缺点:1)效率低 2)调试复杂 3)性能开销大
    应用:1)脚本语言解释引擎 2)公式解释、规则引擎 3)专家系统、配置驱动系统。
  2. 规则系统体系结果风格 –规则集、规则解释器、规则/数据选择器和工作内存。
    特点:1)核心 规则集+工作内存+推理引擎 2)基于条件配置执行动作 3)属于虚拟机风格的特例
    优点:1)业务逻辑和代码分离 2)易于修改和维护。 3)适合复杂决策场景。
    缺点:1)推理效率不高 2)规则冲突难处理
    应用:1)风控系统、审批流 2)专家系统、决策支持系统。

5)独立构件体系结构

  1. 进程通信体系结构
    特点:1)构件是独立进程 2)通过消息传递 、ipc交互 3)进程间松耦合。
    优点:1)健壮性好,一个进程崩不影响整体。 2)可分布式部署 3)并发能力强
    缺点:1)通信开销大 2)同步、死锁问题复杂
    应用:1)操作系统服务 2)分布式后台服务。
  2. 事件系统体系结构(隐式调用) , 事件源->发布事件->事件管理器->分发或者通知事件->事件处理器(可以有多个)
    特点:1)构件:事件源、事件处理器 2)事件发布->管理器->广播通知 3)不直接调用,由事件触发。
    优点:1)耦合度低、易于扩展 2)复用器、可插拔 3)适合复杂交互操作。
    缺点:1)控制流不清除 2)难以调试、测试 3)无法保证执行顺序。
    应用:1)GUI界面系统 2)消息中间件 、发布订阅 3)实时监控、事件驱动架构。