【架构-19】架构风格比较

news2025/1/11 5:04:42

在这里插入图片描述

独立构件风格(Independent Components):

适用场景:需要灵活扩展和组合的复杂大数据应用

特点:
高度解耦:各组件之间高度独立,可单独开发和部署
灵活性和可扩展性:易于根据需求添加或替换组件
复杂度高:需要管理多个独立的组件及其交互
通信开销:组件间需要通过网络通信,可能会有性能开销

(1)事件驱动风格
优点:
松耦合:组件之间通过事件进行通信,彼此之间解耦,易于维护和扩展。
响应性:系统可以及时响应事件,适用于实时和交互式应用。
并发性:事件驱动的系统可以支持并发处理多个事件。
缺点:
(1)构件放弃了对计算的控制权,完全由系统来决定
(2)存在数据传输问题

数据流风格(Data Flow):

适用场景:实时数据处理和流式计算场景

特点:
数据驱动:以数据流为中心组织系统
并行处理:数据可以在不同组件间并行流转和处理
实时性:适合处理实时数据流,低延迟
容错性:单个组件失败不会影响整体

(1)管道/过滤器风格
优点:
模块化:系统可以被拆分成多个独立的组件,易于开发和维护。
可重用性:过滤器可以在不同的管道中重复使用,提高代码的可重用性。
可扩展性:可以通过添加新的过滤器来扩展系统的功能。
缺点:
过多的过滤器可能导致性能下降,增加系统的复杂性。
数据流在过滤器之间传递,可能导致数据转换和传输的开销。

调用返回风格(Pipe and Filter):

适用场景:需要灵活组合和复用处理组件的应用

特点:
组件解耦:各处理组件独立,松散耦合
可重用性:各组件可独立重用于其他应用
可配置性:可灵活配置组件顺序和数据流
延迟问题:需要在组件间传递数据,可能会有延迟

(1)面向对象风格
优点:
模块化:系统可以被组织成多个对象,易于理解、扩展和维护。
可重用性:面向对象的设计鼓励代码的重用,通过继承和多态性实现代码的灵活性和可扩展性。
封装性:对象可以封装数据和功能,提供更好的安全性和抽象性。
缺点:
复杂性:面向对象的设计可能导致较高的复杂性,特别是对于大型系统。
性能开销:面向对象的设计可能引入一些额外的性能开销,如动态绑定和消息传递。

虚拟机风格(Virtual Machine):

适用场景:需要资源隔离和弹性伸缩的大数据应用

特点:
隔离性:基于虚拟机的沙箱环境,隔离计算资源
可移植性:可在不同硬件平台上运行
扩展性:可根据需求动态扩展计算资源
管理复杂:需要管理虚拟机映像和资源调度

(1)解释器风格:
优点:
灵活性:解释器风格允许在运行时解释和执行代码,提供了系统的灵活性和动态性。
可扩展性:可以通过添加新的解释器或修改现有解释器来扩展系统的行为。
缺点:
性能开销:解释器的执行通常比编译后的代码执行更慢,因为需要解析和解释每一条指令。
复杂性:解释器的设计和实现可能比较复杂,需要处理语法解析、语义解释等方面的问题。

数据共享风格(Data Shared):

适用场景:需要多个组件共享和协作处理同一批数据的应用

特点:
数据中心化:数据集中存储和共享
一致性和完整性:有利于保证数据的一致性和完整性
访问开销:需要通过网络访问共享数据,可能会有性能开销
单点瓶颈:共享存储可能成为系统瓶颈

(1)仓库风格
优点:
数据中心:集中式数据仓库提供了数据的一致性和可管理性。
数据共享:多个组件可以共享数据仓库中的数据,提高数据的可访问性和共享性。
缺点:
性能瓶颈:集中式数据仓库可能成为系统的性能瓶颈,特别是在高并发场景下。
数据一致性:多个组件同时对数据仓库进行操作可能导致数据一致性问题。

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

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

相关文章

利用cython将.py文件编译为.pyd文件

文章目录 1. 引言2. py文件编译为pyd文件步骤2.1 环境准备2.2 准备setup.py文件2.3 进行编译 3. 测试代码 1. 引言 在实际的Python开发中,为了防止Python脚本源码暴露,常常需要对python源码文件进行加密保护,Python的原始文件格式为.py&…

(IDEA修改Java版本)java: 警告: 源发行版 X 需要目标发行版 X

搜索关键词:一致、发行 错误信息 其他错误: java: 错误: 不支持发行版本 6 java: -source 1.5 中不支持 lambda 表达式 (请使用 -source 8 或更高版本以启用 lambda 表达式) 思路 有两个地方要检查,JDK版本保持一致即可。 比如统一用JDK8或…

外卖系统开发的技术栈和架构设计

开发一个功能完备且高效的外卖系统,需要选择合适的技术栈并设计良好的系统架构。本文将详细介绍外卖系统开发过程中常用的技术栈以及架构设计的关键要点,帮助开发者构建一个高性能、可扩展且易维护的外卖平台。 1. 技术栈选择 选择合适的技术栈是开发…

基于51单片机智能蓝牙台灯

基于51单片机智能蓝牙台灯 (仿真+程序+原理图PCB) 功能介绍 具体功能: 1.分为手动/自动两种模式,自动模式下对应LED指示灯亮; 2.手动模式下,可用按键调节亮度; 3.自动…

OLED写入指令和数据

1.OLED写命令 写命令/数据的代码 / * 1. start() 2. 写入 b0111 1000 0x78 3. ACK 4. cotrol byte: (0)(0)000000 写入命令 (0)(1)000000写入数据 5. ACK 6. 写入指令/数据 7. ACK 8. STOP */ void Oled_Write_Cmd(char dataCmd)5.1.4 OLED的寻址模式 如何显示一个点&#x…

NTLite深度Windows系统镜像文件修改定制

计算机爱好者和技术宅的圈子里,NTLite是一个广受欢迎的名字,一款强大的Windows系统定制工具,允许用户对Windows安装镜像进行深度修改,从而打造出一个更加个性化、高效且精简的操作系统。无论是为了优化系统性能、移除不必要的组件,还是集成最新的更新和驱动,NTLite都能成…

Mac在docker可视化界面上安装主流数据库

前言 篇幅有点长,大家可以打开目录快速跳转到想要的数据库即可! 虽然说用命令行会显得我们更加专业一些,但对于我英语水平不怎么好的人来说,毕竟命令多又长,还不好记。我个人是喜欢复杂问题简单化,踩了很多…

如何使用 ArcGIS Pro 计算水库库容量

计算水库库容量可以在前期规划的时候协助水库的选址和预估水库的规模,这里为大家介绍一下在 ArcGIS Pro 中如何计算水库的库容量,希望能对你有所帮助。 数据来源 教程所使用的数据是从水经微图中下载的DEM数据,除了DEM数据,常见…

JAVA 大鱼吃小鱼小游戏

java实现大鱼吃小鱼,支持身份证防沉迷、账号密码、选择难度 放沉迷 登录 选择难度 游戏界面

网易狼人杀 设置点击自动发言

我们玩网易狼人杀 刚开始 都会发现 要按住麦克风才能发言 不得不说 相当的麻烦 我们可以点击如下图 右上角这个设置的齿轮 新弹出的设置面板上 勾选这个点击发言 然后 我们只需要 点一下 就可以进入发言状态 然后 再点一下即可停止发言 会方便非常多

数字孪生智慧车站:全方位可视化管理平台

运用图扑数字孪生技术,智慧车站可视化管理平台实时模拟并监控车站运行状态,通过整合即时数据与历史数据,提供精准分析和预测。该平台支持乘客流量管理、设备运行监控、安全预警等多项功能,提高车站运营效率与安全性。直观的可视化…

docker-compose jira、bugzilla

一、jira 同这篇文章: linux docker 部署破解版本jira:8.4.0——测试体验(非商用)_jira docker-CSDN博客 直到构建完破解版本的镜像就可以了~ 二、bugzilla 1. 拉取镜像: 官网镜像搜索bugzilla,第一个就是: 直接…

输入与输出的魔法:探索Python的内置函数

新书上架~👇全国包邮奥~ python实用小工具开发教程http://pythontoolsteach.com/3 欢迎关注我👆,收藏下次不迷路┗|`O′|┛ 嗷~~ 目录 一、从键盘捕获输入:input()函数的力量 二、打印输出:print()函数的…

【Postman接口测试】第三节.第二节.Postman界面功能介绍(下)

文章目录 前言四、Postman 基础功能介绍 4.4 批量执行接口请求 4.5 日志调试 4.6 Postman 断言 4.7 Postman 变量(全局/集合/环境) 4.7.1 定义变量 4.7.2 获取变量 4.8 请求前置脚本 4.9 接口自动关…

MyBatisPlus的简单入门

文章目录 1.MybatisPlus的简介2.创建SpringBoot工程3.编写测试类 1.MybatisPlus的简介 MyBatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在:简化开发、提高效率。 它对应的官方网址:链接 2.创建Sprin…

window自动启动bat文件

开机自动开启远程桌面, WinR 执行netplwiz 命令进入设置;取消勾选,可选择所需用户,点击应用,输入远程的密码即可 开机自动开启远程桌面, WinR 执行netplwiz 命令进入设置;取消勾选&#xff0…

AppScan/哥斯拉的字体大小显示异常

搜索关键字:缩放、分辨率、高DPI 问题现象 其他软件的菜单字体显示异常,解决版办法也一样 哥斯拉 godzilla没有URL 解决办法 第一步: 在桌面软件快捷方式的图标上按鼠标右键,在弹出的对话框中选择【属性】,进入到属…

synchronized 锁的到底是什么?

通过8种情况演示锁运行案例,看看我们到底锁的是什么 1锁相关的8种案例演示code package com.bilibili.juc.lock;import java.util.concurrent.TimeUnit;/*** 题目:谈谈你对多线程锁的理解,8锁案例说明* 口诀:线程 操作 资源类* 8…

产教协同|暴雨AI算力赋能传媒实践教学

近日,“第七届传媒实践教学创新研讨会暨中国高校影视学会实验教学专业委员会年会”在美丽的山城重庆成功举办。本次大会以“拥抱AI,融合共生”为主题,吸引了来自全国200多所高校、30多家企业以及700多位大视听实践教学产学研用各界专家、学者…

【Kotlin】简单介绍与使用kotlin

🍎个人博客:个人主页 🏆个人专栏:Kotlin ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 特点 变量和常量 数据类型和类型推断 函数 字符串模板 条件表达式 空安全 when 表达式 循环 我的其他博客 前言 Kotlin是…