分布式系统常见软件架构模式

news2024/9/28 11:23:42

常见的分布式软件架构

    • Peer-to-Peer (P2P) Pattern
    • API Gateway Pattern
    • Pub-Sub (Publish-Subscribe)
    • Request-Response Pattern
    • Event Sourcing Pattern
    • ETL (Extract, Transform, Load) Pattern
    • Batching Pattern
    • Streaming Processing Pattern
    • Orchestration Pattern
    • 总结

先上个图,个人感觉总结的很好。
在这里插入图片描述
下面我们分别来概括说明一下:

Peer-to-Peer (P2P) Pattern

对等模式在两个或更多组件之间促进直接通信,而不需要中心协调器。
在这个分散的模型中,网络中的每个节点都可以充当客户端和服务器,从而实现高效的资源共享和协作。
P2P 架构通常用于文件共享系统、分散式应用程序 (DApp) 和区块链网络中,在这些系统中,弹性和可扩展性至关重要。

API Gateway Pattern

API 网关充当客户端请求访问应用程序内后端服务的统一入口点。
通过将多个 API 合并到一个界面中,它简化了客户端-服务器交互并强制执行安全、身份验证和速率限制策略。
API 网关是微服务架构中的基本组件,支持服务发现、负载均衡和协议转换,同时抽象了后端系统的复杂性。

Pub-Sub (Publish-Subscribe)

发布-订阅模式通过消息代理或事件总线(如 Kafka、Solace、RabbitMQ 或 ActiveMQ)将消息生产者(发布者)与消费者(订阅者)解耦。
发布者将消息广播到预定义的主题或频道,而订阅者对特定主题表示兴趣并异步接收相关消息。
发布-订阅架构促进了松散耦合、可扩展性和容错性,使其非常适合实时消息传递系统、事件驱动的微服务和物联网平台。

Request-Response Pattern

请求-响应模式代表了分布式系统中的基本交互模型,其中客户端向服务器发送请求并等待相应的响应。
这种同步通信范例在 Web 应用程序、RESTful API 和 RPC(远程过程调用)框架中很普遍。
请求-响应交互确保了可预测的行为并支持错误处理,使其适用于事务性工作流和面向用户的界面。

Event Sourcing Pattern

事件溯源是一种分布式系统模式,用于将应用程序的状态作为一系列不可变事件进行持久化。
它不是直接存储当前状态,而是存储表示状态转换的事件,并在需要时重放这些事件以重建应用程序状态。
事件溯源支持审计、时间查询和重放,使其非常适合金融系统、协作编辑工具和历史数据至关重要的领域驱动设计。

ETL (Extract, Transform, Load) Pattern

**ETL(提取-转换-加载)**是一种数据集成模式,用于从多个来源提取数据,将其转换为标准化格式,然后加载到目标数据库或数据仓库中。
此模式对于商业智能、数据分析和数据仓库项目中的数据迁移、同步和整合任务至关重要。
ETL 管道可自动执行数据工作流,处理数据质量问题,并支持大数据集的批处理。

Batching Pattern

批处理涉及在处理之前累积数据一段时间或直到达到某个阈值,然后将其作为一个单元进行处理。
通过将多个操作聚合到更大的批次中,它可以减少开销并提高数据处理管道中的效率。
批处理通常用于数据摄取、ETL 流程和分布式计算框架,以优化资源利用并最大程度地减少延迟。

Streaming Processing Pattern

流处理支持实时连续摄取、处理和分析数据流。与处理静态数据集的批处理不同,流处理系统以低延迟和高吞吐量处理无限数据流。
流处理架构支持事件驱动处理、复杂事件处理 (CEP) 和实时分析应用程序,涉及金融、物联网和网络安全等领域。

Orchestration Pattern

编排涉及一个中央协调器(编排器)管理分布式组件或服务之间的交互,以执行工作流或业务流程。
通过协调任务执行、处理异常和强制依赖关系,编排确保跨越多个系统的复杂工作流有序执行。
编排引擎用于工作流自动化、业务流程管理 (BPM) 和微服务编排,以简化操作并提高敏捷性。

总结

简而言之,有效管理数据和通信流对于构建健壮且可扩展的分布式系统至关重要。

对等、API 网关、发布-订阅、请求-响应、事件溯源、ETL、批处理、流处理和编排等架构模式提供了有价值的解决方案,以应对系统设计和实现中的各种挑战。

通过理解这些软件架构和分布式系统模式及其各自的优势和权衡,架构师和开发人员可以做出明智的决策,设计出满足其应用程序和用户不断变化的需求的系统。

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

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

相关文章

基于Golang+Vue3快速搭建的博客系统

WANLI 博客系统 项目介绍 基于vue3和gin框架开发的前后端分离个人博客系统,包含md格式的文本编辑展示,点赞评论收藏,新闻热点,匿名聊天室,文章搜索等功能。 项目在线访问:http://bloggo.chat/ 或 http:/…

Photos框架 - 自定义媒体资源选择器(数据部分)

引言 在iOS开发中,系统已经为我们提供了多种便捷的媒体资源选择方式,如UIImagePickerController和PHPickerViewController。这些方式不仅使用方便、界面友好,而且我们完全不需要担心性能和稳定性问题,因为它们是由系统提供的&…

基于扩散的生成模型的语音增强和去噪

第二章 目标说话人提取之《Speech Enhancement and Dereverberation with Diffusion-based Generative Models》 文章目录 前言一、任务二、动机三、挑战四、方法1.方法:基于分数的语音增强生成模型(sgmse)2.网络结构 五、实验评价1.数据集2.采样器设置和评价指标3.基线模型4.评…

godot新建项目及设置外部编辑器为vscode

一、新建项目 初次打开界面如下所示,点击取消按钮先关闭掉默认弹出的框 点击①新建弹出中间的弹窗②中填入项目的名称 ③中设置项目的存储路径,点击箭头所指浏览按钮,会弹出如下所示窗口 根据图中所示可以选择或新建自己的游戏存储路径&…

音视频开发之旅(85)- 图像分类-VGG模型解析

目录 1. VGG解决的问题 2. 网络结构和参数 3. pytorch搭建vgg 4.flower_photos分类任务实践 5.资料 一、VGG解决的问题 论文链接:https://arxiv.org/pdf/1409.1556 在VGG之前,大多数深度学习模型相对较浅,比如下面的AlexNet(5层卷积和3…

记录阿里云部署gitlab

登录阿里云: 阿里云登录 - 欢迎登录阿里云,安全稳定的云计算服务平台 选择自己的ECS实例。我的实例是 使用VNC登录:输入用户名和密码 安装所需的依赖包: sudo yum install -y yum-utils device-mapper-persistent-data lvm2 添…

Git(分布式版本控制系统)(fourteen day)

一、分布式版本控制系统 1、Git概述 Git是一种分布式版本控制系统,用于跟踪和管理代码的变更,它由Linux、torvalds创建的,最初被设计用于Linux内核的开发。Git允许开发人员跟踪和管理代码的版本,并且可以在不同的开发人员之间进行…

货架管理a

路由->vue的el标签->Api->call方法里calljs的api接口->数据声明const xxxData-> 编辑按钮:点击跳出页面并把这一行的数据给到表单formDataba2 保存按钮:formDataba2改过的数据->xxApi发送->查询Api 跳转仓库:把tableData.value数据清空->callXxxAp…

华为云依赖引入错误

问题:记录一次项目加在华为云依赖错误,如下: 错误信息:Could not find artifact com.huawei.storage:esdk-obs-java:pom:3.1.2.1 in bintray-qcloud-maven-repo (https://dl.bintray.com/qcloud/maven-repo/) 找到本地仓库&#…

mac环境Qt Creator报错:Warning: You are changing a read-only file.

mac环境Qt Creator报错: Warning: You are changing a read-only file. 权限许可 文件权限问题 修改文件夹权限的基本语法: 打开终端:打开 macOS 中的终端应用程序。 sudo chmod -R permissions folder_pathchmod 是改变文件或文件夹权限…

虚拟机之ip配置,ssh连接到虚拟机

右边是我的虚拟机,左边是我使用vscode来连接(终端也可以。然后注意vscode配置后点一下刷新,不会自动刷新的QA)(吐槽一下,虚拟机都不能复制内容呢,确实仿真,centos仿真就是因为没有图…

基于深度学习网络的USB摄像头实时视频采集与水果识别matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 将usb摄像头对准一个播放不同水果图片的显示器,然后进行识别,识别结果如下: 本课题中…

爬取贴吧的标题和链接

免责声明 感谢您学习本爬虫学习Demo。在使用本Demo之前,请仔细阅读以下免责声明: 学习和研究目的:本爬虫Demo仅供学习和研究使用。用户不得将其用于任何商业用途或其他未经授权的行为。合法性:用户在使用本Demo时,应确…

微信小程序-自定义tabBar

通过官网给出的示例自己实现了自定义的tabBar,但结果发现 无法监听页面生命周期函数 结语:原想的是实现不一样的效果(如下) 故尝试了自定义tabBar,虽然做出来了,但也发现这个做法存在不足: 在…

算法竞赛数据生成及使用Sublime对拍

写在前面:最近几天看蒋老师直接使用了Sublime中的FastOlympicCode插件进行了对拍,出于兴趣来学习一下,关于插件的配置已经有很多大佬讲过啦,这里不再赘述。数据生成的代码我会放到最后,包括生成数组、区间、树、图。 …

2024安全大模型技术与市场研究报告

大模型驱动的AIGC引发技术革命,国资委强调国企需加大AI投入。大模型解决网络安全行业攻防不对等问题,国内外企业纷纷推出基于大模型的网络安全产品,AI将改变网络安全产品格局。 自 2022 年底开始,以 LLM(大语言模型,简…

CSS(九)——CSS 轮廓(outline)

CSS 轮廓(outline) 轮廓(outline)是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 轮廓(outline)属性指定元素轮廓的样式、颜色和宽度。 让我们用一个图来看…

使用Claude 3.5 Sonnet和Stable Diffusion XL:如何通过Amazon Bedrock不断优化图像生成直到满足需求

在Amazon Bedrock的AI模型中,Anthropic Claude 3系列现在新增了图像识别功能。特别是最新的Anthropic Claude 3.5 Sonnet,图像识别能力得到了显著提升。我进行了一些简单的试验和比较,深入探索了这些Claude模型在OCR(光学字符识别…

边界网关IPSEC VPN实验

拓扑: 实验要求:通过IPSEC VPN能够使PC2通过网络访问PC3 将整个路线分为三段 IPSEC配置在FW1和FW2上,在FW1与FW2之间建立隧道,能够传递IKE(UDP500)和ESP数据包,然后在FW1与PC2之间能够流通数据…

C# Nmodbus,EasyModbusTCP读写操作

Nmodbus读写 两个Button控件分别为 读取和写入 分别使用控件的点击方法 ①引用第三方《NModbus4》2.1.0版本 全局 public SerialPort port new SerialPort("COM2", 9600, Parity.None, 8, (StopBits)1); ModbusSerialMaster master; public Form1() port.Open();…