<>kafka介绍


kafka是apache开源的消息队列顶级项目之一,在大数据场景下使用较多,由linkedin开源,目前社区活跃,全球较多组织开始使用kafka来进行数据交换。

<>rabbitmq介绍
RabbitMQ是流行的开源消息队列系统,用erlang语言开发。RabbitMQ是AMQP(高级消息队列协议)的标准实现。
<>kafka和rabbitmq全面对比分析

对比项 kafka rabbitmq
开发语言 Java erlang
是否支持多租户 2.x.x支持多租户 支持多租户
是否支持topic优先级 不支持 支持
是否支持消息全局有序 不支持 支持
是否支持消息分区有序 支持 支持
是否内置监控 无内置监控 内置监控
是否支持多个生产者 一个topic支持多个生产者
是否支持多个消费者 一个topic支持多个消费者
是否支持一个分区多个消费者 不支持 不支持
是否支持JMX 支持 不支持(非java语言编写)
是否支持加密 支持 支持
消息队列协议支持 仅支持自定义协议 支持AMQP、MQTT、STOMP协议
客户端语言支持 支持多语言客户端 支持多语言客户端
是否支持消息追踪 不支持消息追踪 支持消息追踪
是否支持消费者推模式 不支持消费者推模式 支持消费者推模式
是否支持消费者拉模式 支持消费者拉模式 支持消费者拉模式
是否支持广播消息 支持广播消息 支持广播消息
是否支持消息回溯 支持消息回溯,因为消息持久化,消息被消费后会记录offset和timstamp 不支持,消息确认被消费后,会被删除
是否支持消息数据持久化 支持消息数据持久 支持消息数据持久
是否支持消息堆积 支持消息堆积,并批量持久化到磁盘 支持阈值内的消息对接,无法支持较大的消息堆积
是否支持流量控制 支持控制用户和客户端流量 支持生产者的流量控制
是否支持事务性消息 支持 不支持
元数据管理 通过zookeeper进行管理 支持消息数据持久
默认服务端口 9200 5672
默认监控端口 kafka web console 9000;kafka manager 9000; 15672
网络开销 相对较小 相对较大
内存消耗 相对较小 相对较大
cpu消耗 相对较大 相对较小
<>实际场景选择


在实际生产应用中,通常会使用kafka作为消息传输的数据管道,rabbitmq作为交易数据作为数据传输管道,主要的取舍因素则是是否存在丢数据的可能;rabbitmq在金融场景中经常使用,具有较高的严谨性,数据丢失的可能性更小,同事具备更高的实时性;而kafka优势主要体现在吞吐量上,虽然可以通过策略实现数据不丢失,但从严谨性角度来讲,大不如rabbitmq;而且由于kafka保证每条消息最少送达一次,有较小的概率会出现数据重复发送的情况;

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信