Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡能扩展到数千万个话题吗?_Apache Kafka - Fatal编程技术网

Apache kafka 卡夫卡能扩展到数千万个话题吗?

Apache kafka 卡夫卡能扩展到数千万个话题吗?,apache-kafka,Apache Kafka,我目前正在计划开发一个设备服务器,并热衷于使用Kafka,但是,我不确定它是否能够支持一个范例,即每台设备有一个主题,而可能有1000多万台设备 我希望每个主题只有一个分区,并且所需的存储空间有限(Kafka的最佳实践是为这么多的设备使用键而不是主题。Kafka可以扩展到无限数量的键,但不是无限数量的主题一个主题有多个分区有一些优点。首先,正如前面所说,您可以使用键来指定发送消息的设备。您不需要需要分区的数量等于设备的数量,但可以少一些;由于密钥的使用,主要的方面是来自相同设备(相同密钥)的消息

我目前正在计划开发一个设备服务器,并热衷于使用Kafka,但是,我不确定它是否能够支持一个范例,即每台设备有一个主题,而可能有1000多万台设备


我希望每个主题只有一个分区,并且所需的存储空间有限(Kafka的最佳实践是为这么多的设备使用键而不是主题。Kafka可以扩展到无限数量的键,但不是无限数量的主题

一个主题有多个分区有一些优点。首先,正如前面所说,您可以使用键来指定发送消息的设备。您不需要需要分区的数量等于设备的数量,但可以少一些;由于密钥的使用,主要的方面是来自相同设备(相同密钥)的消息始终按顺序转到同一分区。在消费者方面,您可以利用同一消费者组中的更多消费者在不同分区上工作并共享消息负载;您可以扩展到与分区数量相等的消费者数量。

为什么消费者需要订阅~10k主题?设备是生产者还是消费者?如果您稍微解释一下总体架构,以及您试图实现的目标,这会有所帮助。消费者每个人都持有一组~10k设备的状态信息,因此特定消费者必须订阅代表其有效处理的设备的主题/分区。消费者为了负载平衡,可能需要将其有状态信息传输给其他使用者,因此使用者与主题/分区之间的关系不是固定的。谢谢,我的挑战是,在使用者方面,许多使用者都代表~10k个唯一密钥,他们代表的密钥可能会随着负载平衡而改变。我很抱歉想象一下,在更改这么多密钥进入哪个分区时会遇到一个巨大的挑战?@AlistairLowe您能让kafka使用普通生产者分区器和消费者组功能自动进行分区吗?如果您使用密钥发布,默认分区器将确保同一密钥上的所有消息进入同一分区。That将问题简化为为为每个使用者分配一组平衡的分区,这是普通使用者组功能所做的。这可以很好地扩展,您可以动态添加新的使用者实例,并且仍然具有平衡的使用者,并保证按顺序处理具有相同密钥的任何消息。