登录/注册

消息总线

更多

好的,我们来详细讲讲消息总线(Message Bus)。

简单来说,消息总线是一种软件架构模式或组件,它作为不同应用、服务或系统组件之间传递消息(数据或事件)的中央通信管道和协调中心。 你可以把它想象成一个专门负责消息传递的“中枢神经系统”或“高速公路系统”。

它的核心思想是解耦

  1. 生产者(Publisher/Sender): 产生消息的服务或组件(例如,用户注册服务生成一条“新用户已创建”的消息)。
  2. 消息总线: 接收生产者发送的消息,负责存储(如果需要)、路由(决定发给谁)、传递消息。
  3. 消费者(Subscriber/Receiver): 订阅并接收自己感兴趣消息的服务或组件(例如,邮件服务订阅“新用户已创建”消息以便发送欢迎邮件,积分服务也订阅该消息以便给新用户赠送积分)。

关键特性和优势:

  1. 解耦性:
    • 松耦合: 生产者和消费者之间不需要直接知道对方的存在或位置。生产者只管把消息发送到总线,消费者只管从总线接收自己订阅的消息。这大大降低了系统组件间的依赖关系。
    • 独立演进: 服务可以独立开发、部署、升级或替换,只要它们遵循与总线交互的消息契约(格式),不会影响其他依赖它的服务(直接依赖消失了)。
  2. 异步通信:
    • 生产者发送消息后通常不需要等待消费者立即处理完成即可继续执行自己的任务。总线负责可靠地将消息传递给消费者(可能在之后某个时间点)。
    • 这提高了系统的响应速度和吞吐量(生产者不会被阻塞)。
  3. 可扩展性:
    • 易于水平扩展。可以增加更多的消费者实例来处理积压的消息或提高处理速度。
    • 生产者也可以独立扩展。
  4. 可靠性:
    • 大多数消息总线实现提供消息持久化(将消息存储到磁盘),确保即使在服务器崩溃后消息也不会丢失。
    • 提供消息确认机制(消费者处理成功后通知总线),保证消息至少被成功消费一次。
  5. 灵活性 & 路由:
    • 支持多种消息传递模式:
      • 点对点: 一个消息只被一个消费者处理(例如任务队列)。
      • 发布/订阅: 一个消息可以被多个订阅了它的消费者处理(例如广播通知)。
      • 请求/响应: 虽然不如前两种常见,但某些总线也能模拟。
    • 可以根据消息内容、主题等进行复杂的路由。
  6. 缓冲:
    • 当消费者处理速度跟不上生产者生产速度时,消息总线充当缓冲区,平滑流量高峰,避免系统过载崩溃。

常见的消息总线实现(消息中间件):

典型应用场景:

  1. 微服务架构: 服务间通信的核心基础设施,实现服务解耦。
  2. 事件驱动架构: 事件的产生、传播和处理的基础。
  3. 系统集成: 连接不同技术栈、新旧系统,实现数据交换。
  4. 日志和指标聚合: 将分散的日志和指标收集到中央处理系统(如ELK栈或Prometheus)。
  5. 实时数据流处理: 如Kafka用于处理用户行为数据、物联网传感器数据流等。
  6. 任务队列: 将耗时任务(如发送邮件、图像处理)放入队列异步执行。
  7. 通知系统: 广播系统事件或用户通知。
  8. 最终一致性: 在分布式系统中,通过异步消息传递来实现跨服务的最终数据一致性(相对于强一致性)。

总结:

消息总线是实现松耦合、可扩展、弹性和异步通信的关键技术组件。它通过提供一个可靠、灵活的消息传递通道,极大地简化了分布式系统、微服务和复杂应用架构中组件之间的交互。选择合适的消息总线实现(如Kafka, RabbitMQ)对于构建健壮和高效的现代应用至关重要。

CAN总线与LIN总线的区别

随着汽车电子系统的复杂性增加,车辆内部通信的需求也在不断增长。CAN总线和LIN总线作为两种主要的车载通信协议,各自扮演着重要的角色。 1. 设计原理 CAN

2024-11-12 10:13:38

前端总线是属于什么总线

前端总线(Front-Side Bus,简称FSB)在计算机体系结构中扮演着至关重要的角色,它属于系统总线的一种,是连接CPU与主板北桥芯片(或称为内存控制器集线器)之间的高速数据通道。以下是对前端

2024-10-10 17:11:14

CAN总线接口EMC标准电路设计方案

CAN总线接口EMC标准电路设计方案

资料下载 jupitars3993 2021-07-12 10:45:28

基于CPCI总线的四通道总线通讯模块设计

基于CPCI总线的四通道总线通讯模块设计

资料下载 佚名 2021-06-22 16:58:19

基于DSP的航空发动机分布式总线设计方案

在航空发动机分布式控制系统的研究过程中,为保证系统的可靠性,对通讯总线的实时性和确定性提出了更高的要求。在现有航空发动机分布式控制系统CAN总线的研究成果基础上,提出将时间触发TCAN

资料下载 佚名 2021-05-17 14:33:11

汽车驱动系统的CAN总线设计

汽车驱动系统的CAN总线设计说明。

资料下载 姚小熊27 2021-04-20 09:48:01

CAN总线故障诊断与解决专家版资源下载

本文所有测试与分析都是基于广州致远电子股份有限公司生产的专业版CAN总线分析仪——CANScope-Pro。分析排查步骤与解决方案,为笔者数年CAN总线研发与现场支持的经验,按此步骤可以发现与解决CAN

资料下载 ah此生不换 2021-04-19 09:21:36

什么是CAN总线通信?CAN总线工作原理

这意味着变送器通过CAN收发器改变总线电平,并将其信息传输到CAN总线。接收器通过监测总线电平将

2024-02-19 14:53:54

什么是APB协议/总线?APB总线入门

上一篇文章简单讲解了什么是AMBA总线,简单来说,AMBA总线是一系列协议。定义了适用于不同场景的总线家族。今天我们就来将AMBA

2024-01-02 11:37:04

并行总线和串行总线的区别

并行总线和串行总线的区别  并行总线和串行总线是计算机系统中常见的两种数

2023-12-07 16:45:27

什么是LIN总线?车载总线之LIN总线概述

LIN(Local Interconnect Network)即局部连接网络,也被称为“局域网子系统”即LIN总线是CAN总线网络下的子系统,车上各个LIN总

2023-07-26 10:12:19

CAN总线与plccan总线的区别

plccan总线通讯的意义就在于提高了PLC工作的稳定性和安全性,毕竟CAN总线可以算得上是最稳的几类现场总线之一了。

2022-09-21 14:07:23

什么是总线、内部总线和外部总线

是什么?1.4工业控制机的哪几个部分组成?各部分的主要作用是什么?工业控制机的特点有哪些?1・5什么是总线、内部总线和外部总线?PC

2021-09-01 08:59:05

什么是前端总线

微机中总线一般有内部总线、系统总线和外部总线。内部

2020-07-13 17:53:15

7天热门专题 换一换
相关标签