系统架构设计师—案例分析—架构设计

news2025/3/18 14:49:31

文章目录

  • 经典架构风格对比
    • 面向对象架构风格/显示调用风格
      • 优点
      • 缺点
      • 举例
    • 事件驱动的系统/隐式调用风格
      • 优点
      • 缺点
      • 举例
    • 基于规则的系统架构风格
      • 优点
      • 缺点
      • 举例
    • 管道过滤器风格
      • 优点
      • 缺点
      • 举例
    • 仓库风格
      • 优点
      • 缺点
      • 举例
    • 解释器风格
      • 优点
      • 缺点
      • 举例
    • 分层架构风格
      • 优点
      • 缺点
      • 举例

经典架构风格对比

面向对象架构风格/显示调用风格

在这里插入图片描述

优点

  1. 一个对象对外隐藏了自己的详细信息。
  2. 对象将数据和操作封装在一起。
  3. 继承和封装方法为对象复用提供了技术支持。

缺点

  1. 如果一个对象要调用另一个对象,则必须知道它的标识和名称。

举例

一般业务系统

事件驱动的系统/隐式调用风格

在这里插入图片描述

优点

  1. 事件发布者不需要知道哪些构件会响应事件。

缺点

  1. 构件放弃了对计算的控制权,完全由系统来决定。
  2. 存在数据传输的问题。

举例

消息队列

基于规则的系统架构风格

在这里插入图片描述

优点

  1. 规则数据可以动态更改,灵活性好。
  2. 定义新的规则,即可扩展。

缺点

  1. 实时解释规则,性能较差。

举例

规则引擎

管道过滤器风格

在这里插入图片描述

优点

  1. 简单性。
  2. 支持复用。
  3. 便于系统分析。

缺点

  1. 不适合用来设计交互式应用系统。
  2. 由于没有通用的数据传输标准,因此每个过滤器都需要解析输入数据和合成数据。
  3. 难以进行错误处理。

举例

流程引擎

仓库风格

在这里插入图片描述

优点

  1. 便于多客户共享大量数据,而不必关心数据时何时产生的,由谁提供的,通过何种途径来提供。

缺点

  1. 对共享数据结构,不同知识源要达成一致。
  2. 需要同步机制和加锁机制来保证数据的完整性和一致性,增大了设计的复杂度。

举例

数据仓库

解释器风格

在这里插入图片描述

优点

  1. 可移植性好。

缺点

  1. 由于使用了特定语言和自定义操作规则,因此增加了系统运行的开销。
  2. 解释器系统难以设计和测试。

举例

编译器

分层架构风格

在这里插入图片描述

优点

  1. 设计者可以将系统分解为一个增量的步骤序列,从而完成复杂的业务逻辑。
  2. 每一层最多和相邻的上下两层进行交互,只给相邻层提供相同的接口。

缺点

  1. 并非所有系统都能够按照层次来进行划分。
  2. 很难找到一种合适和正确的层次划分方法。
  3. 传输数据需要经过多个层次。
  4. 多层结构难以调试。

举例

OSI协议,MVC架构,DDD架构,Cola架构。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2317276.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)

技术范围:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬虫、数据可视化、小程序、安卓app、大数据、物联网、机器学习等设计与开发。 主要内容:免费功能设计、开题报告、任务书、中期检查PPT、系统功能实现、代码编写、论文编写和辅导、论…

Android 14 Telephony 网络选择功能介绍

一、总体介绍 (一)功能 手动搜网的流程:用户通过UI触发,调用TelephonyManager的API,比如startNetworkScan,然后这个请求会传递到RIL层,通过AT命令与基带通信,进行网络扫描。结果返回后,经过TelephonyRegistry通知应用层。中间可能涉及IPC,比如Binder通信,因为应用和…

深入解析音频编解码器(Audio CODEC):硬件、接口与驱动开发

音频编解码器(Audio CODEC)是音频处理系统中的核心组件,负责 模拟信号与数字信号的相互转换,广泛应用于 智能音箱、嵌入式系统、消费电子产品 等设备。本篇文章将从 硬件结构、接口解析、驱动开发 和 软件配置 等方面,…

深度学习【迭代梯度下降法求解线性回归】

梯度下降法 梯度下降法是一种常用迭代方法,其目的是让输入向量找到一个合适的迭代方向,使得输出值能达到局部最小值。在拟合线性回归方程时,我们把损失函数视为以参数向量为输入的函数,找到其梯度下降的方向并进行迭代&#xff0…

[Lc14_priority_queue] 最后一块石头重量 | 数据流中的第 K 大元素 | 前K个高频单词 | 数据流的中位数

目录 1.最后一块石头的重量 题解 2.数据流中的第 K 大元素 题解 3.前K个高频单词 题解 代码 ⭕4.数据流的中位数 题解 在C中,使用标准库中的priority_queue,默认情况下它是一个最大堆(即大堆排序),这意味着最…

熔断和降级的区别,具体使用场景有哪些?

熔断与降级的核心区别在于触发条件和应用目标,具体差异及使用场景如下: 一、核心区别 对比维度熔断降级触发原因下游依赖服务故障(如超时、异常率过高)触发系统整体负载过高或流量洪峰管理目标层级框架级保护(无业务优…

利用hexo+github部署属于自己的个人博客网站(2025年3月所写)

利用hexogithub部署属于自己的个人博客网站 前情提要:如果你出现了莫名其妙的报错,可能与权限有关,可以以管理员的身份运行git bash或者cmd 本篇博客仅限于利用hexo搭建博客,并且部署到github上面,让自己可以有一个访…

pandas学习笔记(一)——基础知识和应用案例

pandas学习笔记 基础语法参考菜鸟教程:https://www.runoob.com/pandas/pandas-tutorial.html # jupyter import pandas as pd import matplotlib from matplotlib import pyplot as plt import numpy as npmatplotlib.use(TkAgg)data {timestamp: [1, 2, 3, 4, 5…

【AI 大模型】RAG 检索增强生成 ⑤ ( 向量数据库 | 向量数据库 索引结构和搜索算法 | 常见 向量数据库 对比 | 安装并使用 向量数据库 chromadb 案例 )

文章目录 一、向量数据库1、向量数据库引入2、向量数据库简介3、向量数据库 索引结构和搜索算法4、向量数据库 应用场景5、传统数据库 与 向量数据库 对比 二、常见 向量数据库 对比三、向量数据库 案例1、安装 向量数据库 chromadb2、核心要点 解析① 创建数据库实例② 创建数…

解决single cell portal点击下载但跳转的是网页

Single cell RNA-seq of Tmem100-lineage cells in a mouse model of osseointegration - Single Cell Portal 想下载个小鼠数据集: 点击下载跳转为网页: 复制bulk download给的链接无法下载 bulk download给的原链接: curl.exe "http…

基于 Prometheus + Grafana 监控微服务和数据库

以下是基于 Prometheus Grafana 监控微服务和数据库的详细指南&#xff0c;包含架构设计、安装配置及验证步骤&#xff1a; 一、整体架构设计 二、监控微服务 1. 微服务指标暴露 Spring Boot 应用&#xff1a; xml <!-- 添加 Micrometer 依赖 --> <dependency>…

CAN总线的CC帧和FD帧之间如何仲裁

为满足CAN总线日益提高的带宽需求&#xff0c;博世公司于2012年推出CAN FD&#xff08;具有灵活数据速率的CAN&#xff09;标准&#xff0c;国际标准化组织&#xff08;ISO&#xff09;2015年通过ISO 11898-1:2015标准&#xff0c;正式将CAN FD纳入国际标准&#xff0c;以示区别…

SpringBoot 第一课(Ⅲ) 配置类注解

目录 一、PropertySource 二、ImportResource ①SpringConfig &#xff08;Spring框架全注解&#xff09; ②ImportResource注解实现 三、Bean 四、多配置文件 多Profile文件的使用 文件命名约定&#xff1a; 激活Profile&#xff1a; YAML文件支持多文档块&#xff…

Excel(函数篇):COUNTIF与CONUTIFS函数、SUMIF与SUMIFS函数、ROUND函数、MATCH与INDEX函数、混合引用与条件格式

目录 COUNTIF和COUNTIFS函数COUNTIF函数COUNTIFS函数SUMIF和SUMIFS函数SUMIF函数SUMIFS函数SUMIFS函数与控件实现动态年月汇总ROUND、ROUNDUP、ROUNDDOWN函数单元格混合引用条件格式与公式,标记整行数据MATCH和INDEX函数COUNTIF和COUNTIFS函数 COUNTIF函数 统计下“苏州”出现…

虚拟定位 1.2.0.2 | 虚拟定位,上班打卡,校园跑步模拟

Fake Location是一款运行于安卓平台上的功能强大、简单实用的虚拟定位软件。它能够帮助用户自定义位置到地图上的任意地方&#xff0c;以ROOT环境运行不易被检测&#xff0c;同时也支持免ROOT运行。提供路线模拟、步频模拟、WIFI模拟等方式&#xff0c;支持反检测。 大小&…

【最大异或和——可持久化Trie】

题目 代码 #include <bits/stdc.h> using namespace std;const int N 6e510; //注意这里起始有3e5&#xff0c;又可能插入3e5 const int M N * 25;int rt[N], tr[M][2]; //根&#xff0c;trie int idx, cnt, br[M]; //根分配器&#xff0c;点分配器&#xff0c;点的相…

C# WPF编程-启动新窗口

C# WPF编程-启动新窗口 新建窗口&#xff1a; 工程》添加》窗口 命名并添加新的窗口 这里窗口名称为Window1.xaml 启动新窗口 Window1 win1 new Window1(); win1.Show(); // 非模态启动窗口win1.ShowDialog(); // 模态启动窗口 模态窗口&#xff1a;当一个模态窗口被打开时&a…

Python 实现大文件的高并发下载

项目背景 基于一个 scrapy-redis 搭建的分布式系统&#xff0c;所有item都通过重写 pipeline 存储到 redis 的 list 中。这里我通过代码演示如何基于线程池 协程实现对 item 的中文件下载。 Item 结构 目的是为了下载 item 中 attachments 保存的附件内容。 {"crawl_tim…

【最新】 ubuntu24安装 1panel 保姆级教程

系统&#xff1a;ubuntu24.04.1 安装软件 &#xff1a;1panel 第一步&#xff1a;更新系统 sudo apt update sudo apt upgrade 如下图 第二步&#xff1a;安装1panel&#xff0c;运行如下命令 curl -sSL https://resource.fit2cloud.com/1panel/package/quick_start.sh -o …

c++图论(二)之图的存储图解

在 C 中实现图的存储时&#xff0c;常用的方法包括 邻接矩阵&#xff08;Adjacency Matrix&#xff09;、邻接表&#xff08;Adjacency List&#xff09; 和 边列表&#xff08;Edge List&#xff09;。以下是具体实现方法、优缺点分析及代码示例&#xff1a; 1. 邻接矩阵&…