LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

消息中间件最全详解(万字图文总结)

admin
2024年1月23日 12:30 本文热度 478

消息中间件在分布式以及高并发架构都是重要的内容,下面我就重点来详解消息中间件@mikechen

消息中间件定义

消息中间件(Message Middleware)是一种用于构建分布式系统的软件基础设施,它提供了一种异步、可靠、可伸缩的消息传递机制。

 

消息中间件应用场景

消息中间件的作用,主要包含如下4种:

1.异步通信

通过消息中间件,不同的服务之间可以进行异步通信,可以提高系统的吞吐量和并发性能,避免因为同步调用而导致的阻塞和性能瓶颈。

 

2应用解耦

消息中间件可以将消息发送方和接收方解耦,使得它们可以独立地进行开发和部署,不需要直接依赖于对方的实现细节。

 

3.流量控制

消息中间件可以设置流量控制,当消息流量过大时,可以暂停消息的发送,等到流量下降时再继续发送,从而平滑地处理流量峰值。

 

4.日志处理

消息中间件需要对关键信息进行日志记录和处理,以便于监控和追踪系统运行情况,发现潜在问题,优化系统性能。

 

消息中间件原理

消息中间件通常由生产者(Producer)、消息队列(Message Queue)、消费者(Consumer)三部分组成。

如下图所示:

上图为整体架构会涉及三类角色:

  1. 生产者:将消息发送到消息队列中;

  2. 消费者:从消息队列中获取消息并进行处理;

  3. 消息队列:作为消息传递的桥梁,负责存储和管理消息;

消息中间件提供多种消息传递模式如点对点模式和发布/订阅模式等。

1.点对点模型

在点对点模式中,生产者将消息发送到一个特定的消息队列中,消息队列只会将消息传递给一个消费者进行处理。

也就是说,一个消息只能被一个消费者处理,这种模式也称为队列模式(Queue Mode)。

如下图所示:

在点对点模式中,消息的生产者和消费者之间是一对一的关系,这种模式可以实现简单的异步通信和任务分配,适用于需要处理一些不需要广播的任务,如任务调度、订单处理等。

 

2.订阅发布模式

在订阅发布模式中,生产者将消息发布到一个主题(Topic)中,消费者可以订阅该主题并接收其中的消息。

在这种模式中,消息队列会将消息广播给所有订阅了该主题的消费者,也就是说,一个消息可以被多个消费者同时处理。这种模式也称为主题模式(Topic Mode)。

如下图所示:

 

消息中间件有哪些

下面是一些常见的消息中间件:

1.Apache Kafka

Kafka是一个分布式的高吞吐量的消息系统,最初由LinkedIn开发,现在是Apache软件基金会的顶级开源项目之一。

Kafka广泛应用于多种用例,例如实时数据流处理、日志聚合、监控、指标和日志收集、消息队列等。

Kafka的基本模型是生产者向主题(Topic)发布消息,消费者从主题订阅消息。

消息通过一个或多个Kafka集群的代理(Broker)进行传输和存储,如下图所示:

 

 

2.RabbitMQ

一个开源的 AMQP(高级消息队列协议)消息代理软件,支持多种消息协议和多种语言的客户端,并提供可靠性、灵活性和可扩展性等优势。

RabbitMQ是erlang语言开发,结合erlang语言本身的并发优势,RabbitMQ支持许多高级特性,例如消息确认、持久化、优先级、消息 TTL、消息复制和分片等。

 

3.ActiveMQ

一个完全基于 JMS(Java 消息服务)规范的消息中间件,支持多种消息协议和多种客户端语言,并提供高可用、可靠性、事务性等特性。

 

4.RocketMQ

RocketMQ是一个分布式的消息队列系统,由阿里巴巴集团开发并开源。

它具有高可用性、高吞吐量、高可靠性和可扩展性等特点,并且支持多种消息传递模式,例如发布/订阅、点对点等。

RocketMQ架构,如下图所示:

RocketMQ架构:主要由NameServer、Broker、Producer以及Consumer四部分构成。

关于RocketMQ架构原理,更加详细的内容请查看:RocketMQ架构原理详解(4大工作原理设计图解)

 

 5.Pulsar

Pulsar是 Apache 软件基金会顶级项目,是下一代云原生分布式消息流平台。

Pulsar被看作是云原生时代实时消息流传输、存储和计算最佳解决方案,其整体架构图如下所示:

 

6.Redis 消息队列

Redis除了可以用作分布式缓存,也可以用于消息队列的使用,支持多种消息协议和多种语言的客户端。

不同的消息中间件在设计思想、功能特性、适用场景等方面都有所差异,需要根据具体的需求和场景选择合适的消息中间件。

 

消息中间件选型

总的来说:

  1. 电商、金融等对事务性要求很高的,可以考虑RocketMQ。

  2. 技术挑战不是特别高,用 RabbitMQ是不错的选择。

  3. 如果是大数据领域的实时计算、日志采集等场景可以考虑 Kafka。

以上就是消息中间件详解,希望对你掌握消息中间件有所帮助。



-end-


该文章在 2024/1/23 12:30:36 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved