首页 > 其他分享 >分布式系统常见软件架构模式

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

时间:2024-07-25 14:58:47浏览次数:10  
标签:处理 Pattern 常见 应用程序 API 软件架构 分布式系统 ETL

常见的分布式软件架构

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

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、批处理、流处理和编排等架构模式提供了有价值的解决方案,以应对系统设计和实现中的各种挑战。

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

标签:处理,Pattern,常见,应用程序,API,软件架构,分布式系统,ETL
From: https://blog.csdn.net/gxiangzi/article/details/140681049

相关文章

  • 常见问题
    1、在浏览器中输入url地址到显示主页的过程?1.输入URL并解析当用户在浏览器的地址栏中输入URL(如 http://www.xxx.com)并按下回车键时,浏览器开始处理该请求。2.DNS解析浏览器首先需要将域名(如 www.example.com)解析为IP地址。这个过程包括以下步骤:浏览器查找DNS缓存......
  • 数据库建表和上线脚本常见规范
    1数据库建表规范1.1表英文名和字段英文名不要使用拼音1.2表中建议不能缺少的字段。主键(IDvarchar2(50)primarykey)创建时间(CREATE_TIMEDATEdefaultSYSDATE)更新时间(UPDATE_TIMEDATEdefaultSYSDATE)1.3涉及枚举类型的字段,需要将枚举值补充到字段注释后面。格......
  • Java基础常见面试题学习(上)
    1、JVMvsJDKvsJRE①Java虚拟机(JVM)是运行Java字节码的虚拟机。JVM有针对不同系统的特定实现(Windows,Linux,macOS),目的是使用相同的字节码,它们都会给出相同的结果。字节码和不同系统的JVM实现是Java语言“一次编译,随处可以运行”的关键所在。JVM并不是只有一种!只要满足JVM规范,......
  • 3种常见的数据分析场景梳理
    作者:咕猫(唐羽影)数据分析已经逐步的被应用到工作/生活的各个领域,数据分析的本质就是从繁杂的数据中看到其深层次的规律和机理,从而对未发生的事情进行预测!那么,了解一下常见的3种数据分析场景,即描述现状、分析原因、预测未来,来加深对数据分析的理解。数据分析已经逐步的被应用......
  • JAVA常见面试题-Map接口有哪些实现类
    HashMap、TreeMap、LinkedHashMap、Hashtable、Properties由于Map中结构特点(Key无序的,不可重复,并且使用Set存储所有的key,value无序的,可重复,并且使用Collection存储所有的value)故key所在类需要重写hashCode(),equal()方法,value只需要重写equal。一个键值对:key-value构成了一个......
  • JAVA常见面试题-设计模式(单例模式实现)
    单例模式分为懒汉式与饿汉式,其中饿汉式较为常用。饿汉式publicclassSingleton{   privatestaticSingletoninstance=newSingleton();   privateSingleton(){}   publicstaticSingletongetInstance(){   returninstance; ......
  • 分布式系统中的Java应用:挑战与解决方案
    分布式系统中的Java应用:挑战与解决方案大家好,我是微赚淘客系统3.0的小编,是个冬天不穿秋裤,天冷也要风度的程序猿!今天我们将探讨在分布式系统中使用Java的挑战与解决方案。分布式系统在处理大规模数据和高并发访问方面具有显著优势,但也面临诸多复杂性和挑战。本文将深入分析这些挑......
  • 常见的FTP软件的二进制方式上传图文指导
    常见FTP软件有FlashFXP、CuteFTP、LeapFTP等。不同FTP软件略有差别,用户应结合自身软件情况找到“二进制”处进行设置。英文版的FTP软件,选择设置传输类型为binary(image)。FlashFXP软件进行二进制上传,方法是:点击“会话”——选择“传送模式”——“二进制”即可:CuteFTP软件进行......
  • 【Verilog入门】常见的可用于仿真不能综合成硬件的语句及其原因
    在Verilog设计中,不可综合的语句和结构主要是因为它们无法直接映射到实际的硬件实现。以下是详细的解释和每种不可综合语句或结构背后的原因:1.延迟控制语句(#)原因:延迟控制语句用于仿真环境中引入时间延迟,但在实际硬件中没有直接对应的实现。硬件电路的操作是由时钟边沿......
  • C#中十种常见的开启线程的方式
    //第1种:Thread类。使用场景:快速启动执行简单任务。//优点:简单易用。提供了直接控制线程的方法,如Start、Suspend、Resume、Abort等。//缺点:功能较少,不适合复杂的线程管理;直接管理线程可能导致资源利用率不高或死锁等问题。T......