消息中间件最全详解(万字图文总结)
当前位置:点晴教程→知识管理交流
→『 技术文档交流 』
消息中间件在分布式以及高并发架构都是重要的内容,下面我就重点来详解消息中间件@mikechen 消息中间件定义消息中间件(Message Middleware)是一种用于构建分布式系统的软件基础设施,它提供了一种异步、可靠、可伸缩的消息传递机制。
消息中间件应用场景消息中间件的作用,主要包含如下4种: 1.异步通信 通过消息中间件,不同的服务之间可以进行异步通信,可以提高系统的吞吐量和并发性能,避免因为同步调用而导致的阻塞和性能瓶颈。
2应用解耦 消息中间件可以将消息发送方和接收方解耦,使得它们可以独立地进行开发和部署,不需要直接依赖于对方的实现细节。
3.流量控制 消息中间件可以设置流量控制,当消息流量过大时,可以暂停消息的发送,等到流量下降时再继续发送,从而平滑地处理流量峰值。
4.日志处理 消息中间件需要对关键信息进行日志记录和处理,以便于监控和追踪系统运行情况,发现潜在问题,优化系统性能。
消息中间件原理消息中间件通常由生产者(Producer)、消息队列(Message Queue)、消费者(Consumer)三部分组成。 如下图所示: 上图为整体架构会涉及三类角色:
消息中间件提供多种消息传递模式如点对点模式和发布/订阅模式等。 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除了可以用作分布式缓存,也可以用于消息队列的使用,支持多种消息协议和多种语言的客户端。 不同的消息中间件在设计思想、功能特性、适用场景等方面都有所差异,需要根据具体的需求和场景选择合适的消息中间件。
消息中间件选型总的来说:
以上就是消息中间件详解,希望对你掌握消息中间件有所帮助。 -end- 该文章在 2024/1/23 12:30:36 编辑过 |
关键字查询
相关文章
正在查询... |