Kafka的特性
- 高吞吐、低延迟:kafka最大的特点就是收发消息非常快,kafka每秒可以处理几十万条消息,它的最低延迟只有几毫秒。
- 高伸缩性:可以通过增加分区partition来实现扩容。不同的分区可以在不同的broker中。通过zookeeper来管理broker实现扩展,zk管理Consumer可以实现负载。
- 持久性、可靠性:Kafka能够允许数据的持久化存储,消息被持久化到磁盘,并支持数据备份防止数据丢失。
Kafka与RabbitMQ对比
- 产品侧重:kafka-流式消息处理、消息引擎;RabbitMQ-消息代理。
- 性能:kafka具有更高的吞吐量。RabbitMQ主要是push,kafka只有pull。
- 消息顺序:分区里边的消息是有序的,同一个consumer group里边的一个消费者只能消费一个partition,能保证消息的有序性。
- 消息路由和分发:RabbitMQ更加灵活。
- 延迟消息、死信队列:RabbitMQ支持。
- 消息的留存:kafka消费完成后消息会留存,RabbitMQ消费完会删除。kafka可以设置retention,清理消息。
优先选择RabbitMQ
- 高级灵活的路由规则
- 消息时序控制,控制消息过期或者延迟
- 高级容错的处理能力,在消费者更有可能处理消息不成功的场景中。
- 更简单的消费实现
优先选择Kafka
- 严格的消息顺序
- 延长消息留存时间,包括消息重新消费的可能
- 传统解决方案无法满足的高伸缩能力