我开始学习Kafka的企业解决方案的目的。在阅读过程中,我想到了一些问题:一个主题上的所有分区大小相同吗?如果Kafka的信息是关于一个主题发送的,而这个主题是重载的,会发生什么。没有关于该主题的任何新消息的内存?
jk9hmnmh1#
一个主题上的所有分区大小相同吗?不,它们通常大小不一样。主要取决于如何跨分区分发消息。如果在消息中使用密钥,它们将被散列并用于对数据进行分区。如果消息中没有密钥,数据将被分配到跨分区的循环访问。此外,它还取决于生产者在将其发送到代理之前将多少消息 Package 到一个批中,以及应用哪种压缩类型。但是,您可以说一个topicpartition的所有副本一同步就具有相同的大小。如果Kafka的信息是关于一个主题发送的,而这个主题是重载的,会发生什么。没有关于该主题的任何新消息的内存?一个主题本身不能被重载,而是整个Kafka代理。如果一个代理没有剩余的可用磁盘空间,那么它将自动关闭,在这种情况下,如果该代理的负责人在该代理上,您将无法将更多的数据写入topicpartition。但是,如果只有一个代理发生故障,并且您的主题中配置了多个复制,那么这些复制将接管另一个代理。为了确保永远不会发生这种情况,如果您设置了 cleanup.policy 至 delete 并设置 retention.bytes 这样,主题/副本的数量就不会超过存储限制。
cleanup.policy
delete
retention.bytes
1条答案
按热度按时间jk9hmnmh1#
一个主题上的所有分区大小相同吗?
不,它们通常大小不一样。主要取决于如何跨分区分发消息。如果在消息中使用密钥,它们将被散列并用于对数据进行分区。如果消息中没有密钥,数据将被分配到跨分区的循环访问。
此外,它还取决于生产者在将其发送到代理之前将多少消息 Package 到一个批中,以及应用哪种压缩类型。
但是,您可以说一个topicpartition的所有副本一同步就具有相同的大小。
如果Kafka的信息是关于一个主题发送的,而这个主题是重载的,会发生什么。没有关于该主题的任何新消息的内存?
一个主题本身不能被重载,而是整个Kafka代理。如果一个代理没有剩余的可用磁盘空间,那么它将自动关闭,在这种情况下,如果该代理的负责人在该代理上,您将无法将更多的数据写入topicpartition。但是,如果只有一个代理发生故障,并且您的主题中配置了多个复制,那么这些复制将接管另一个代理。
为了确保永远不会发生这种情况,如果您设置了
cleanup.policy
至delete
并设置retention.bytes
这样,主题/副本的数量就不会超过存储限制。