Apache Kafka - 如何实现可靠的数据传递

2023-05-29 10:15:02 浏览数 (1)

可靠的数据传递

Kafka 通过以下几个方面实现可靠的数据传递:

  1. 分区副本 - Kafka 的分区有多个副本,如果某个副本失效,其他副本可以继续服务。
  2. 生产者重试 - 生产者在发送消息失败时会自动重试,一直到成功发送或者达到最大重试次数。
  3. 批量确认 - 生产者会批量发送消息,并批量接收确认,避免过于频繁的网络交互。
  4. 消费者偏移量 - 消费者会追踪并定期提交消费偏移量,以指示已经消费到的位置,从而实现重试时不重复消费等功能。
  5. 最小批量 - Broker 会将小的消息批量组合,以减少网络传输次数,提高效率。
  6. 校验和 - Kafka 支持消息级别的 CRC32 校验和以检测消息内容错误。
  7. 顺序写磁盘 - Kafka 会将消息顺序写到磁盘,避免磁盘寻址重复读写,提高性能。
  8. 页缓存 - Kafka 利用页面缓存来减少磁盘 IO 次数,提高读写性能。
  9. 混合存储 - Kafka 支持内存与磁盘混合存储消息,热门消息在内存中,冷消息在磁盘上。
  10. 高可用 - Kafka 支持多副本、自动恢复机制与消息重试等功能提高可用性。
  11. 时间戳 - Kafka 在消息中加入时间戳,用于消息顺序与延迟计算。
  12. 生产者消息编号 - Kafka 生产者里的消息分配连续的编号,用于快速定位断点。

所以,Kafka 通过分区多副本、生产者消费者重试机制、批量操作与校验、顺序写磁盘与页缓存、混合存储、高可用设计以及时间戳与消息编号等手段,实现了高吞吐、低延迟与高可靠的数据传输。这也体现了 Kafka 的设计目标与关键机制


导图

0 人点赞