不同消息中间件的介绍

常用消息中间件

当前使用较多的消息队列有RabbitMQ、RocketMQ、ActiveMQ、Kafka、ZeroMQ、MetaMQ………(在此介绍最主流的消息中间件)

RabbitMQ

主要特性
可伸缩性:集群服务
消息持久化:从内存持久化消息到硬盘,再从硬盘加载到内存

RabbitMQ,基于erlang语言开发,响应速度快些,可视化界面。缺点就是数据吞吐量相对与小一些,并且是基于erlang语言开发,比较重的问题难以维护。

RocketMQ

RocketMQ是基于Java开发,文档十分的完善,拥有一些其他消息队列不具备的高级特性,如定时推送,其他消息队列是延迟推送,如RabbitMQ通过设置expire字段设置延迟推送时间。又比如rocketmq实现分布式事务,比较可靠的。

ActiveMQ

主要特性

1、服从JMS规范:JMS 规范提供了良好的标准和保证,包括:同步 或 异步 的消息分发,一次和仅一次的消息分发,消息接收和订阅等等。遵从JMS规范的好处在于,不论使用什么JMS实现提供者,这些基础特性都是可用的;
2、连接灵活性:ActiveMQ提供了广泛的连接协议,支持的协议有:HTTP/S,IP多播,SSL,TCP,UDP等等。对众多协议的支持让ActiveMQ拥有了很好的灵活性;
3、支持的协议种类多:OpenWire、STOMP、REST、XMPP、AMQP;
持久化插件和安全插件:ActiveMQ提供了多种持久化选择。而且,ActiveMQ的安全性也可以完全依据用户需求进行自定义鉴权和授权;
支持的客户端语言种类多:除了Java之外,还有:C/C++,.NET,Perl,PHP,Python,Ruby;
4、代理集群:多个ActiveMQ代理可以组成一个集群来提供服务;
5、异常简单的管理:ActiveMQ是以开发者思维被设计的。所以,它并不需要专门的管理员,因为它提供了简单又使用的管理特性。有很多中方法可以监控ActiveMQ不同层面的数据,包括使用在JConsole或者在ActiveMQ的WebConsole中使用JMX。通过处理JMX的告警消息,通过使用命令行脚本,甚至可以通过监控各种类型的日志。

缺点

社区活跃度不及RabbitMQ高;
根据其他用户反馈,会出莫名其妙的问题,会丢失消息;
目前重心放到activemq6.0产品Apollo,对5.x的维护较少;
不适合用于上千个队列的应用场景;

Kafka

Apache Kafka是一个分布式消息发布订阅系统。它最初由LinkedIn公司基于独特的设计实现为一个分布式的日志提交系统(a distributed commit log),之后成为Apache项目的一部分。Kafka性能高效、可扩展良好并且可持久化。它的分区特性,可复制和可容错都是其不错的特性。

1、快速持久化:可以在O(1)的系统开销下进行消息持久化;
2、高吞吐:在一台普通的服务器上既可以达到10W/s的吞吐速率;
完全的分布式系统:Broker、Producer和Consumer都原生自动支持分布式,自动实现负载均衡;
3、支持同步和异步复制两种高可用机制;
4、支持数据批量发送和拉取;
5、零拷贝技术(zero-copy):减少IO操作步骤,提高系统吞吐量;
6、数据迁移、扩容对用户透明;
7、无需停机即可扩展机器;
8、其他特性:丰富的消息拉取模型、高效订阅者水平扩展、实时的消息订阅、亿级的消息堆积能力、定期删除机制;

缺点

Kafka单机超过64个队列/分区时,Load时会发生明显的飙高现象。队列越多,负载越高,发送消息响应时间变长;
使用短轮询方式,实时性取决于轮询间隔时间;
消费失败不支持重试;
支持消息顺序,但是一台代理宕机后,就会产生消息乱序;
社区更新较慢。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值