我有几个关于卡夫卡的问题。如果有人可以通过回复其中一个来帮助我,我将非常感激。
提前谢谢你:)
Q1)我知道分区在Kafka Broker中是分开的。但分裂是基于什么?例如,如果我有3个代理和6个分区,如何确保每个代理有2个分区?目前这种分裂是如何在卡夫卡进行的?
Q2)当制作人发送新消息时,该消息的默认格式是什么? Avro格式?如何将此默认格式更改为可能更适合的另一种格式?
Q3)我知道要配置分区内文件(日志段)的最大大小,我必须更改以下配置:log.segment.bytes(默认为1G)。但是哪个配置参数,我必须改变以增加/减少目录的最大大小(即分区)?
Q4)如果分区认为领导者已经死亡,则其中一个跟随分区将起带头作用。选举新领导人的步骤是什么? (即)如何选举新领导人?
Q5)配置参数是什么,允许我更改磁盘上2个持续时间? (在磁盘上保留数据 - 顺序写入)
问题6)如何将消息从Kafka经纪人的硬盘头发送给Kafka消费者? Kafka Broker和Zookeeper之间的互动是什么? 是Zookeeper将消息发送给消费者还是Kafka Broker?
提前谢谢你,
答案 0 :(得分:1)
Q1:见How Partitions are split into Kafka Broker?
Q2:经纪人对消息格式不可知 - 他们将消息视为普通字节数组。因此,它可以处理您想要的任何消息格式。格式由您自己的代码确定 - 选择您想要的任何内容,然后向生产者/消费者提供相应的de / serializer。
问题3:在可配置的保留时间过后(log.retention.ms
)或者超过log.retention.bytes
时,主题和分区会被截断。此外,可以压缩主题以避免无限增长。 (参见log.cleanup.policy
)
问题4:对于领导者选举,使用Apache Zookeeper。
第五季:不要理解这个问题。问题6:ZK仅用于维护元数据(例如,确实存在哪些主题)。 ZK不参与客户 - 代理通信的任何实际数据传输。 Kafka使用自己的网络协议。有关详细信息,请参阅Kafka Wiki:https://cwiki.apache.org/confluence/display/KAFKA/Index