kafka笔记1-术语及消息结构

  • Post author:
  • Post category:其他




1.kafka 对外消息处理流程

producer -> kafka -> consumer



1.1 生产消息

producer -> kafka



1.2 消费消息

kafka -> cosumer



2.kafka 对内消息处理流程



2.1 存储生产消息

如图所示:

kafka消息存储流程220330-Gardenias

一个分区partition数据会有多个副本Replica,副本分为两种:领导者副本(Leader Replica)和追随者副本(Follower Replica)。

领导者副本:

  • 对于生产者,存储消息的副本。
  • 对于消费者,查询消息的副本。
  • 对于追随者副本,拉取消息存储的消息源。

    存储消息,查询消息操作的都是领导者副本,追随者副本备份的数据也是从领导者副本中拉取。

    存储消息都是以日志追加的方式(Append-only),所以存储在log segment之后就有了确定的偏移量offset。



2.2 查询消费消息

如图所示:

kafka消息消费流程220330-Gardenias

一个消费者,有自己的consumer offset,类似游标,记录自己消费的偏移量。



3.三层消息架构

Kafka 的三层消息架构:

  • 第一层是主题层,每个主题可以配置 M 个分区,而每个分区又可以配置 N 个副本。
  • 第二层是分区层,每个分区的 N 个副本中只能有一个充当领导者角色,对外提供服务;其他 N-1 个副本是追随者副本,只是提供数据冗余之用。
  • 第三层是消息层,分区中包含若干条消息,每条消息的位移从 0 开始,依次递增。最后,客户端程序只能与分区的领导者副本进行交互。



4.术语

  • 消息:Record。Kafka 是消息引擎嘛,这里的消息就是指 Kafka 处理的主要对象。
  • 主题:Topic。主题是承载消息的逻辑容器,在实际使用中多用来区分具体的业务。
  • 分区:Partition。一个有序不变的消息序列。每个主题下可以有多个分区。

    消息位移:Offset。表示分区中每条消息的位置信息,是一个单调递增且不变的值。
  • 副本:Replica。Kafka 中同一条消息能够被拷贝到多个地方以提供数据冗余,这些地方就是所谓的副本。副本还分为领导者副本和追随者副本,各自有不同的角色划分。副本是在分区层级下的,即每个分区可配置多个副本实现高可用。
  • 生产者:Producer。向主题发布新消息的应用程序。
  • 消费者:Consumer。从主题订阅新消息的应用程序。
  • 消费者位移:Consumer Offset。表征消费者消费进度,每个消费者都有自己的消费者位移。
  • 消费者组:Consumer Group。多个消费者实例共同组成的一个组,同时消费多个分区以实现高吞吐。
  • 重平衡:Rebalance。消费者组内某个消费者实例挂掉后,其他消费者实例自动重新分配订阅主题分区的过程。Rebalance 是 Kafka 消费者端实现高可用的重要手段。



版权声明:本文为qq_42307562原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。