首页 > 编程知识 正文

消息中间件学哪个好,常用的消息中间件有哪些

时间:2023-05-06 13:38:24 阅读:37998 作者:2601

什么是消息中间件

面向消息的系统(消息中间件)是在分布式系统中完成消息发送和接收的基本软件。 消息中间件,也称为消息队列,指使用高效可靠的消息传递机制进行与平台无关的数据交换,并基于数据通信进行分布式系统集成。 通过提供消息传递和消息队列模型,可以在分布式环境中扩展进程通信。

主流的消息中间件

目前业界流行的开源消息中间件有ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等,其中使用最广泛的有RabbitMQ、RocketMQ、kafket MQ Redis还可以在一定程度上实现“Queue”和“Pub/Sub”这样的结构,从严格意义上讲不是消息中间件。

这三款的区别:

官方链接RabbitMQ

RabbitMQ开始用于通信业务的可靠通信,也是为数不多的支持AMQP协议的产品之一。

优点:

重量轻、速度快、易于部署

支持灵活的路由配置。 RabbitMQ在生产者和队列之间有一个交换机模块。 根据配置的路由规则,生产者可以将发送的消息发送到不同的队列。 路由规则很灵活,也可以自己实现。

RabbitMQ的客户端支持大多数编程语言。

缺点:

在队列中积累大量消息时,性能会急剧下降

RabbitMQ的性能是Kafka和RocketMQ中最差的,每秒处理数万到数十万条消息。 如果APP应用程序需要高性能,请不要选择RabbitMQ。

RabbitMQ是Erlang开发的,功能扩展和二次开发的成本很高。

RocketMQ

RocketMQ是一个开源消息队列,使用java实现。 参考Kafka的设计进行了很多改进。

优点:

RocketMQ主要用于秩序、事务处理、流计算、消息推送、日志流处理、binlog分发等场景。 经过迄今为止的双11考验,据说性能、稳定性不可靠。

RocketMQ几乎具备了消息队列应该具有的所有特性和功能。

java开发对于阅读源代码、扩展和二次开发非常有用。

对电子商务领域的应对延迟进行了很多优化。 在大多数情况下,响应为毫秒级别。 如果APP应用程序关心响应时间,则可以使用RocketMQ。

性能比RabbitMQ高一位数,每秒处理数十万条消息。

缺点:

与外围系统的集成和兼容性不好。

Kafka

Kafka的可靠性、稳定性、功能特性满足大部分应用场景。 与外围系统的兼容性排在第一、第二位,特别是在大数据和流计算领域,大多数相关的开源软件都支持Kafka。 Kafka是由Scala和Java开发的,由于设计了大量的批处理和异步处理,Kafka可以获得非常高的性能。 其异步消息的发送和接收是三个中最好的,但与RocketMQ相差很大,每秒处理数十万条消息。 对于异步消息,打开压缩后,Kafka最终将达到每秒处理2000w消息的级别。

优点:

支持多个生产者和消费者

支持中介横向展开

复制集机制可实现数据冗馀,避免数据丢失

用主题分类数据

通过分割和发送压缩数据,减少数据传输开销,提高吞吐量

支持多种模式的消息

基于磁盘的数据持久化

高性能的处理信息在大数据的情况下能够保证子秒级的消息延迟

一个消费者可以支持多个主题的消息

CPU和内存消耗很少

网络开销也比较小

支持数据中心之间的数据复制

支持群集镜像

缺点:

由于批量发送,数据无法真正实时到达

mqtt协议不支持

不支持直接访问物联网传感数据

只能支持统一分区中的消息有序,而不能实现全局消息有序

监视不完整,需要安装插件

需要与zookeeper协作的元数据管理

数据丢失,不支持事务

数据可能会被重复消耗,消息顺序可能会混乱。 可以确保有序地创建单个固定分区内部的消息。 但是,如果一个主题有多个分区,则无法保证秩序。 需要zookeeper的支持。 topic一般需要人工创建,部署和维护比mq更高

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。