Kafka消息组合
Kafka message composition
kafka 消息有:
key, value, compression type, headers(key-value pairs,optional),
partition+offset, timestamp
密钥被散列到分区以找到哪个分区生产者将写入。
那为什么我们需要分区作为消息的一部分。
此外,生产者如何知道偏移量,因为偏移量看起来更像是 kafka 服务器的 属性?并且它不会导致服务器和生产者之间的耦合吗?
如果多个生产者正在写入一个主题,它会如何工作,因为他们发送的偏移量可能会发生冲突?
why do we need partition as part of message.
客户端是否设置记录分区是可选的。 协议 中仍然需要分区,因为密钥未经过哈希处理 server-side,然后重新路由。
how does producer know the offset as offset seems more like a property of kafka server?
生产者需要回调来获取 OffsetMetadata,但不知道何时发送批次
And doesn't it cause coupling between server and producer?
是吗?它是 Kafka 协议。消费者也与服务器“耦合”,因为它必须了解如何与之通信。
multiple producers are writing to a topic, as offset send by them may clash?
如果 max.inflight.connections
大于 1 并且启用了退役,那么是的,批次可能会重新排列,但发送请求最初是有序的,并且客户端不设置记录偏移量,代理会设置。
kafka 消息有:
key, value, compression type, headers(key-value pairs,optional), partition+offset, timestamp
密钥被散列到分区以找到哪个分区生产者将写入。
那为什么我们需要分区作为消息的一部分。
此外,生产者如何知道偏移量,因为偏移量看起来更像是 kafka 服务器的 属性?并且它不会导致服务器和生产者之间的耦合吗?
如果多个生产者正在写入一个主题,它会如何工作,因为他们发送的偏移量可能会发生冲突?
why do we need partition as part of message.
客户端是否设置记录分区是可选的。 协议 中仍然需要分区,因为密钥未经过哈希处理 server-side,然后重新路由。
how does producer know the offset as offset seems more like a property of kafka server?
生产者需要回调来获取 OffsetMetadata,但不知道何时发送批次
And doesn't it cause coupling between server and producer?
是吗?它是 Kafka 协议。消费者也与服务器“耦合”,因为它必须了解如何与之通信。
multiple producers are writing to a topic, as offset send by them may clash?
如果 max.inflight.connections
大于 1 并且启用了退役,那么是的,批次可能会重新排列,但发送请求最初是有序的,并且客户端不设置记录偏移量,代理会设置。