Kafka学习

发布时间:2024年01月16日
  • Kafka的消息通过主题(topic)进行分类
  • 主题可以被分为若干个分区(partition),一个分区就是一个提交日志,通过分区来实现数据冗余和伸缩性
  • 消息以追加的方式写入分区,然后以先入先出(FIFO)的顺序读取
  • 无法在整个主题范围内保证消息的顺序,可以保证消息在单个分区内的顺序

  • 生产者(发布者,写入者)创建消息
  • 一般情况下,一个消息会被发布到一个特定的主题上,生产者在默认情况下把消息均衡发不到主题的所有分区上,并不关心特定消息会被写入哪个分区。
  • 特殊情况下,生产者会把消息直接写到指定的分区,通过分区器来实现,分区器为键生成一个散列值,并将其映射到指定分区上,从而保证同一个键的消息会被写到同一个分区上

  • 消费者(订阅者,读者)读取消息
  • 消费者订阅一个或多个主题,并按照消息生成的顺序进行读取
  • 消费者通过检查消息的偏移量来区分已经读取过的消息
  • 偏移量是一个不断递增的整数值,在创建消息时,kafka会把它添加到消息里
  • 同一个分区,每个消息的偏移量都是唯一的
  • 消费者把每个分区最后读取的消息偏移量保存在Zookeeper或Kafka上,如果消费者关闭或重启,读取状态不会丢失
  • 一个或多个消费者共同读取一个主题,群组保证每个分区只能被一个消费者使用

  • 一个独立的Kafka服务器被称为broker
  • broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存

  • 保留消息是Kafka的一个重要特性
  • 保留策略:天数或者消息大小
文章来源:https://blog.csdn.net/error311/article/details/135624789
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。