为了根据密钥分离我的数据:我应该在同一主题中使用多个主题还是多个分区?我根据服务器上的开销,计算,数据存储和负载来询问。
答案 0 :(得分:0)
我建议将您的数据分成(分区)到同一主题中的多个分区。 我假设数据在逻辑上属于一起(例如点击事件流)。 在同一主题中使用多个分区对数据进行分区的优势主要在于所有Kafka API的实现都是这样使用的。
将数据拆分为主题可能会在生产者和消费者实施中产生更多代码。
答案 1 :(得分:0)
正如@rmetzger所建议的那样,将记录分成多个主题会增加生产者层面的复杂性,但可能还有其他一些因素需要考虑。
在Kafka中,主要的并行级别是主题中的分区数,因为这样可以产生大量的消费者实例,以便并行地从同一主题中读取数据。
例如,如果您有一个基于具有N个分区的事件的单独主题,那么在消费时您将能够创建N个消费者实例,每个实例专用于同时使用特定分区。但在这种情况下,消息的排序不能保证。 在并行消费存在的情况下,消息的排序会丢失
另一方面,将相同主题中的记录保存在单独的分区中将使按顺序实现和消费者消息更容易实现( Kafka仅提供分区内消息的总顺序,而不是不同分区之间的消息在一个主题中。)。但在这种情况下,您将仅限于运行一个消费者流程。