博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Kafka 对比 ActiveMQ
阅读量:4189 次
发布时间:2019-05-26

本文共 1049 字,大约阅读时间需要 3 分钟。

Kafka 是LinkedIn 开发的一个高性能、分布式的消息系统,广泛用于日志收集、流式数据处理、在线和离线消息分发等场景。虽然不是作为传统的MQ来设计,在大部分情况,Kafaka 也可以代替原先ActiveMQ 等传统的消息系统。

Kafka 将消息流按Topic 组织,保存消息的服务器称为Broker,消费者可以订阅一个或者多个Topic。为了均衡负载,一个Topic 的消息又可以划分到多个分区(Partition),分区越多,Kafka并行能力和吞吐量越高。

Kafka 集群需要zookeeper 支持来实现集群,最新的kafka 发行包中已经包含了zookeeper,部署的时候可以在一台服务器上同时启动一个zookeeper Server 和 一个Kafka Server,也可以使用已有的其他zookeeper集群。

和传统的MQ不同,消费者需要自己保留一个offset,从kafka 获取消息时,只拉去当前offset 以后的消息。Kafka 的scala/java 版的client 已经实现了这部分的逻辑,将offset 保存到zookeeper 上。每个消费者可以选择一个id,同样id 的消费者对于同一条消息只会收到一次。一个Topic 的消费者如果都使用相同的id,就是传统的 Queue;如果每个消费者都使用不同的id, 就是传统的pub-sub.

如果在MQ的场景下,将Kafka 和 ActiveMQ 相比:

Kafka 的优点

分布式可高可扩展。Kafka 集群可以透明的扩展,增加新的服务器进集群。
高性能。Kafka 的性能大大超过传统的ActiveMQ、RabbitMQ等MQ 实现,尤其是Kafka 还支持batch 操作。下图是linkedin 的消费者性能压测结果:
 
容错。Kafka每个Partition的数据都会复制到几台服务器上。当某个Broker故障失效时,ZooKeeper服务将通知生产者和消费者,生产者和消费者转而使用其它Broker。

Kafka 的不利

重复消息。Kafka 只保证每个消息至少会送达一次,虽然几率很小,但一条消息有可能会被送达多次。

消息乱序。虽然一个Partition 内部的消息是保证有序的,但是如果一个Topic 有多个Partition,Partition 之间的消息送达不保证有序。
复杂性。Kafka需要zookeeper 集群的支持,Topic通常需要人工来创建,部署和维护较一般消息队列成本更高

转载地址:http://yrjoi.baihongyu.com/

你可能感兴趣的文章
不值一驳
查看>>
好的服务器系统
查看>>
一个批量更改文件名的Python脚本
查看>>
[技术八卦]放毒记
查看>>
市场的选择
查看>>
试玩matplotlib碰到的问题
查看>>
Turbo还是那个Turbo吗?
查看>>
TDD的误解
查看>>
关于Firebird
查看>>
Ubuntu 5.1下安装Kylix3
查看>>
看Borland IDE向何处去
查看>>
Palm之祭
查看>>
两种不同的Web应用
查看>>
软件测试管理--目录
查看>>
马克吐温刷墙与碗底的诱惑
查看>>
企业性能测试解决方案讲义——北京软件行业协会IT 沙龙第107 期主题论坛
查看>>
Windows系统一些计数器
查看>>
闲论学习的三种层次。。。
查看>>
关于视频播放性能测试
查看>>
《LoadRunner性能测试实战》内容简介
查看>>