[英]kafka topics and partitions decisions
我需要了解一些有关kafka的信息:
给定这两个条件,您可能会遇到这样一种情况,即如果所有数据都进入单个分区,那么一个使用者将无法继续处理所有消息。 请记住,您可以只用一个使用者处理一个分区(当然,如果使用不同的使用者组,则可以使用2个使用者,但事实并非如此),所以随着时间的流逝,您将开始落后。 但是,如果您有多个分区,则要么可以使用一个使用者并并行处理数据(在某些情况下这可以帮助加快处理速度),要么可以添加更多使用者。
默认情况下,Kafka使用基于哈希的分区。 这可以通过提供自定义分区程序来配置,例如,如果您不关心消息最终位于哪个分区,则可以使用随机分区。
主题的目的完全取决于您
UPD,评论中问题的答案:
通常,添加更多的使用者是为了增加计算能力,而不是为了实现所需的并行性。 要添加并行性,请添加分区。 大多数使用者实现在不同线程上处理不同的分区,因此,如果您具有足够的计算能力,则可能只有一个使用者并行处理多个分区。 然后,如果您开始遇到一个消费者不足的情况,则只需增加更多消费者即可。
创建主题时,只需指定分区数(以及该主题的复制因子,但这是另一回事)。 发送的密钥和分区完全取决于生产者。 实际上,您可以将生产者配置为使用随机分区程序,它甚至不在乎密钥,只需随机选择分区即可。 键->分区之间没有直接关系,从这样的设置中受益是很方便的。
您能详细说明一下吗? 不确定我是否理解这一点,但我想您的问题是您是否只能发送一个值,而Kafka会自行推断出一个密钥。 如果是这样,那么答案是否定的-Kafka不会对消息应用任何转换并将其原样存储,因此,如果您希望消息包含密钥,则生产者必须显式发送密钥。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.