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通常需要人工来创建,部署和维护较一般消息队列成本更高
相关推荐
#### Kafka与Activemq、Rabbitmq、ZeroMq、Rocketmq的比较 在现代分布式系统中,消息中间件(Message Queue, MQ)扮演着至关重要的角色,它们用于在分布式组件之间传输消息,帮助解决网络延迟、组件故障等问题,...
RocketMQ、ActiveMQ 、Kafka对比官方原版文档翻译。 SDK客户端 协议和规范 订阅消息 预定消息 批量消息 广播消息 消息过滤 服务器触发重新传递 消息存储 消息追溯 消息优先级 高可用性和故障转移 消息跟踪 配置 管理...
在当前的消息中间件产品市场中,存在多种选择,包括ActiveMQ、RabbitMQ、RocketMQ、Kafka、ZeroMQ等。每种产品都有其优缺点,本文将对这些产品进行比较,阐述Kafka集群方案选型的必要性和可行性。 一、消息中间件...
2. **特性和优缺点**:对比分析ActiveMQ、RabbitMQ和Kafka各自的特性,以及在不同场景下的适用性。 3. **部署与配置**:如何设置和配置这些服务,包括集群搭建、性能优化等。 4. **API使用**:如何使用各种编程语言...
消息中间件技术选型,ActiveMQ、Apollo、RabbitMQ、RocketMQ、Kafka、Redis、ZeroMQ多维护对比分析
在本文档中,我们将对以下十种消息队列(Message Queue,简称MQ)系统进行详细的技术选型对比:ActiveMQ、RabbitMQ、RocketMQ、Joram、HornetQ、OpenMQ、MuleMQ、SonicMQ、ZeroMQ以及Kafka。这些系统在企业级应用中...
互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术,人工智能互联网资讯,技术简介,IT、AI技术...
* ActiveMQ:Apache 下的一个子项,类似 ZeroMQ,能够以代理人和点对点的技术实现队列。 * Redis:是一个 key-Value 的 NoSql 数据库,但也支持 MQ 功能,数据量较小,性能优于 RabbitMQ,数据超过 10K 就慢的无法...
#### Kafka与其它消息队列的对比 - **RabbitMQ**:支持多种协议,功能丰富,适用于需要复杂路由和负载均衡的应用场景。 - **ZeroMQ**:专为高吞吐量需求设计,但技术复杂度较高,仅支持非持久性队列。 - **ActiveMQ*...
13. **Kafka与其他MQ对比**:如与RabbitMQ、ActiveMQ等对比,讨论各自的优缺点和适用场景。 14. **Kafka的应用场景**:包括日志收集、网站活动追踪、流式处理、数据集成等。 15. **故障排查**:了解如何诊断和解决...
- **ActiveMQ**: 成熟的产品,支持多种协议,但单机吞吐量较低。 - **RabbitMQ**: 性能良好,社区活跃度高,适用于数据量较小的场景。 - **RocketMQ**: 适用于金融等高可靠性要求的领域,经历过大规模的考验。 - **...
例如,ActiveMQ与Kafka相比,ActiveMQ是一个更加成熟的消息中间件,适用于需要事务和多种消息协议支持的场景,而Kafka则在处理大量数据和高吞吐量的消息场景下更为出色。设计者需要根据业务需求和系统特性来选择最...
在实际应用中,有多种消息中间件产品可供选择,例如ActiveMQ、RabbitMQ、RocketMQ和Kafka。这些产品各自有不同的特点和优势,比如ActiveMQ适用于Java环境,具有丰富的文档和协议支持;RabbitMQ以管理界面丰富、低...
JMS规范详情 AMQP协议详情 RocketMQ RabbitMQ Kafka ActiveMQ ......对比
在消息队列的对比中,ActiveMQ、RabbitMQ、RocketMQ和Kafka各有其特点。ActiveMQ以其稳定性和社区支持而广受关注,尤其在非大规模的应用场景中表现出较高的成熟度。RabbitMQ则以Erlang语言的并发能力为基础,提供了...
对于卡夫卡的对比,与其他消息系统相比,如RabbitMQ、Redis、ZeroMQ、ActiveMQ、MetaQ/RocketMQ等,卡夫卡具有高性能跨语言的分布式发布/订阅消息系统的特性,支持数据持久化,具有完全分布式的特性,并能够同时支持...
RabbitMq / Kafka 最好,ActiveMq 次之,ZeroMq 最差。当然ZeroMq 也可以做到,不过自己必须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。 4.高并发 毋庸置疑,...