Kafka 集群 - 生产者

Kafka Cluster - Producer

我有几个关于卡夫卡的问题。如果有人可以通过回复其中之一来帮助我,我将非常感激。

提前谢谢你:)

Q1) 我知道分区是跨 Kafka Broker 拆分的。但是拆分是基于什么?例如,如果我有 3 个代理和 6 个分区,如何确保每个代理都有 2 个分区?目前在 Kafka 中如何进行拆分?

Q2) 当生产者发送一条新消息时,消息的默认格式是什么?阿夫罗格式?如何将此默认格式更改为另一种可能更适合的格式?

Q3) 我知道要配置分区内文件(日志段)的最大大小,我必须更改以下配置:log.segment.bytes(默认为 1G)。但是哪个配置参数,我必须更改为 increase/decrease 目录(即分区)的最大大小?

Q4) 如果一个被认为是领导者的分区已经死亡,那么其中一个跟随者分区将成为领导者。选举新领导人的步骤是什么? (即)如何选举新领导人?

问题 5) 什么是配置参数,它允许我更改 2 个持久保存在磁盘上的时间? (将数据保存在磁盘上 - 顺序写入)

Q6)消息是如何从Kafka broker的硬盘Head发送到Kafka consumer的? Kafka Broker 和 Zookeeper 之间的交互是什么? 是 Zookeeper 将消息发送给消费者还是 Kafka Broker?

提前谢谢你,

Q1:见How Partitions are split into Kafka Broker?

Q2:代理对消息格式不可知——他们将消息视为普通字节数组。因此,它可以处理您想要的任何消息格式。格式由您自己的代码决定——选择您想要的任何格式,只需将相应的 de/serializer 提供给 producer/consumer.

Q3:主题和分区要么在经过可配置的保留时间 (log.retention.ms) 后被截断,要么超过 log.retention.bytes。此外,可以压缩主题以避免无限增长。 (比照log.cleanup.policy

Q4:领导者选举使用 Apache Zookeeper。

Q5:题目没看懂

Q6:ZK仅用于维护元数据(例如哪些主题确实存在)。 ZK 不参与客户与经纪人通信的任何实际数据传输。 Kafka 使用自己的网络协议。有关详细信息,请参阅 Kafka Wiki:https://cwiki.apache.org/confluence/display/KAFKA/Index