当前位置: 首页 > news >正文

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

常见的分布式软件架构

    • 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 和 Https 的区别(图文详解)
  • 在 ArchLinux 上编译运行 axmol 引擎
  • <section id=“nice“ data-tool=“mdnice编辑器“ data-webs
  • 数据缺失补全方法综述
  • 深入解析 Java 的 switch 语句
  • PHP运算符
  • 科普文:后端性能优化的实战小结
  • easyExcel和poi的版本对应
  • ASP.NET Core在启动过程中使用数据库实例的几种方式
  • 原生PHP/JS自主开发的交友内核框架婚恋交友系统V10
  • 【嵌入式硬件】快衰减和慢衰减
  • SqlSugar删除没有定义主键的实体类对应的数据库表数据
  • 学习SQL如何使用CASE语句查询分析设备状态
  • antdesgin table 组件下载成excel
  • leetcode日记(47)螺旋矩阵Ⅱ
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Bytom交易说明(账户管理模式)
  • download使用浅析
  • Go 语言编译器的 //go: 详解
  • IDEA 插件开发入门教程
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • SAP云平台运行环境Cloud Foundry和Neo的区别
  • Spark VS Hadoop:两大大数据分析系统深度解读
  • SQLServer之创建显式事务
  • Theano - 导数
  • yii2权限控制rbac之rule详细讲解
  • 百度贴吧爬虫node+vue baidu_tieba_crawler
  • 聊聊redis的数据结构的应用
  • 面试遇到的一些题
  • 实现菜单下拉伸展折叠效果demo
  • 我的面试准备过程--容器(更新中)
  • 由插件封装引出的一丢丢思考
  • 【干货分享】dos命令大全
  • 国内开源镜像站点
  • 智能情侣枕Pillow Talk,倾听彼此的心跳
  • ​2020 年大前端技术趋势解读
  • ​Java基础复习笔记 第16章:网络编程
  • ​人工智能书单(数学基础篇)
  • #QT项目实战(天气预报)
  • $con= MySQL有关填空题_2015年计算机二级考试《MySQL》提高练习题(10)
  • (8)STL算法之替换
  • (CVPRW,2024)可学习的提示:遥感领域小样本语义分割
  • (done) 两个矩阵 “相似” 是什么意思?
  • (LNMP) How To Install Linux, nginx, MySQL, PHP
  • (八)五种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (动态规划)5. 最长回文子串 java解决
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (接口封装)
  • (算法二)滑动窗口
  • (转)可以带来幸福的一本书
  • .NET 6 在已知拓扑路径的情况下使用 Dijkstra,A*算法搜索最短路径
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .Net 执行Linux下多行shell命令方法
  • .NET(C#、VB)APP开发——Smobiler平台控件介绍:Bluetooth组件
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc