Kafka 基本特性

本文详细介绍了Kafka在可靠性、扩展性方面的设计。包括Kafka如何通过consumer保存状态实现消息传递的灵活性,利用Zookeeper进行动态集群扩展,以及高吞吐量、数据磁盘持久化、zero-copy等特性。此外,还阐述了Producer和Consumer的工作机制,如Producer的负载均衡和HA机制,Consumer的pull消费模式,以及partition与consumer group的关系。最后讨论了Kafka的replica机制和leader选举策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

      可靠性(一致性)
      Kafka(MQ)要实现从producer到consumer之间的可靠的消息传送和分发。在可靠性传输上,传统的MQ系统通常都是通过broker和consumer间的确认(ack)机制实现的,并在broker保存消息分发的状态,但这样一致性也是很难保证的(参考原文)。

      kafka的做法是由consumer自己保存状态,也不要任何确认。这样虽然consumer负担更重,但其实更灵活了。因为不管consumer上任何原因导致需要重新处理消息,都可以再次从broker获得。

      kafak系统扩展性

      kafka使用zookeeper来实现动态的集群扩展,不需要更改客户端(producer和consumer)的配置。broker会在zookeeper注册并保持相关的元数据(topic,partition信息等)更新。而客户端会在zookeeper上注册相关的watcher。一旦zookeeper发生变化,客户端能及时感知并作出相应调整。这样就保证了添加或去除broker时,各broker间仍能自动实现负载均衡。

      kafka设计目标

  • 高吞吐量是其核心设计之一。
  • 数据磁盘持久化:消息不在内存中cache,直接写入到磁盘,充分利用磁盘的顺序读写性能。
  • zero-copy:减少IO操作步骤。
  • 支持数据批量发送和拉取。
  • 支持数据压缩。
  • Topic划分为多个partition,提高并行处理能力。

 &nb

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值