Kafka - 消息与记录与偏移量
Kafka - Message versus Record versus offset
我是 Streaming Broker [如 Kafka] 的新手,来自队列消息系统 [如 JMS、Rabbit MQ]。
我从 Kafka 文档中了解到,消息作为记录以偏移量存储在 Kafka 分区中。消费者从偏移量中读取。
消息和记录有什么区别[multiple/partial消息是否构成一条记录?]
comsumer从offset读取时,有没有可能是consumer读取了部分消息?消费者是否需要根据某种逻辑将这些部分消息串起来?
或
1 条消息 = 1 条记录 = 1 个偏移量
编辑 1:
问题之所以出现,是因为“批量大小”决定了应该向 borker 发布多少字节的消息。假设有 2 条消息,消息 1 = 100 字节,消息 2 = 200 字节,批量大小设置为 150 字节。这是否意味着来自 message1 的 100 个字节和来自 message2 的 50 个字节被同时发送到代理?如果是,这 2 条消息是如何存储在偏移量中的?
在 Kafka 中,Producer 发送 messages 或 records(这两个术语都可以使用可互换)到 主题 。一个topic分为一个或多个Partition分布在Kafka Cluster中,一般至少由三个Brokers.[=13组成=]
A message/record 被发送到领导分区(由单个代理拥有)并关联到 Offset。偏移量是单调递增的数字标识符,用于唯一标识 topic/partition 中的记录,例如记录分区中存储的第一条消息的偏移量为 0,依此类推。
偏移量既用于标识消息在 topic/partition 中的位置,也用于标识 消费者组 .
中的位置
出于优化目的,生产者将对每个分区的消息进行批处理。当达到配置的 batch.sized
或 linger.ms
时,批处理被认为已准备就绪。例如,如果您将 batch.size
设置为 200KB,并且您发送两条消息(150KB 和 100KB),它们可能属于同一批次。但是生产者永远不会将单个消息分割成块。
不,消费者不能阅读部分消息。
我是 Streaming Broker [如 Kafka] 的新手,来自队列消息系统 [如 JMS、Rabbit MQ]。
我从 Kafka 文档中了解到,消息作为记录以偏移量存储在 Kafka 分区中。消费者从偏移量中读取。
消息和记录有什么区别[multiple/partial消息是否构成一条记录?]
comsumer从offset读取时,有没有可能是consumer读取了部分消息?消费者是否需要根据某种逻辑将这些部分消息串起来?
或
1 条消息 = 1 条记录 = 1 个偏移量
编辑 1:
问题之所以出现,是因为“批量大小”决定了应该向 borker 发布多少字节的消息。假设有 2 条消息,消息 1 = 100 字节,消息 2 = 200 字节,批量大小设置为 150 字节。这是否意味着来自 message1 的 100 个字节和来自 message2 的 50 个字节被同时发送到代理?如果是,这 2 条消息是如何存储在偏移量中的?
在 Kafka 中,Producer 发送 messages 或 records(这两个术语都可以使用可互换)到 主题 。一个topic分为一个或多个Partition分布在Kafka Cluster中,一般至少由三个Brokers.[=13组成=]
A message/record 被发送到领导分区(由单个代理拥有)并关联到 Offset。偏移量是单调递增的数字标识符,用于唯一标识 topic/partition 中的记录,例如记录分区中存储的第一条消息的偏移量为 0,依此类推。
偏移量既用于标识消息在 topic/partition 中的位置,也用于标识 消费者组 .
中的位置出于优化目的,生产者将对每个分区的消息进行批处理。当达到配置的 batch.sized
或 linger.ms
时,批处理被认为已准备就绪。例如,如果您将 batch.size
设置为 200KB,并且您发送两条消息(150KB 和 100KB),它们可能属于同一批次。但是生产者永远不会将单个消息分割成块。
不,消费者不能阅读部分消息。