apache-kafka - Kafka 多个生产者写入同一主题 - 消息和数据突发的排序

标签 apache-kafka

我正在尝试了解 Kafka。假设我有多个制作人,每个制作人都写同一个主题。 (由于设计原因,不能有更多的主题,我们使用avro进行序列化)因为我们的消息太大,我们需要把它分成小部分,然后发送到kafka。

在这种情况下 - 来自不同生产者的消息可以混合使用吗? 我怎样才能避免这种情况?任何想法

另外,我们有巨大的数据爆发,比如 2 分钟内有 1000 条消息,然后接下来的 5 到 7 分钟内只有很少的消息,在这种情况下我们可以做什么

最佳答案

Because our message is too big, we need to divide it into small parts and we send it to kafka.

你呢?您运行了基本测试并遇到了一些问题?您是否尝试过调整缓冲区?我很确定 kafka 可以毫不费力地处理相对较大的消息(数十兆字节)。事实上,与大量的小消息相比,您可能会获得更好的吞吐量。

Also , we have huge databurst, like there will be 1000s of message in 2 minutes, then very few message for next 5 to 7 minutes, what can we do in such scenarios

现代服务器机器上的单个 kafka 代理可以轻松处理 ~20k-40k 消息/每秒(每批 1000 条消息,每条 2k 大小,同步模式)。我看不出有什么问题。

Can messages from different Producers can intermix ?

是的,它们可能会混合。事实上,kafka 协议(protocol)并没有很好地定义这个时刻,特定的实现可能会改变这种行为,因此为了获得稳定的解决方案,请查看以下部分。

How can I avoid this scenario?

Kafka有一个分区的概念:每个主题默认有1个分区,每个分区可以看作是一个并行单元。设置适当的分区程序,以便每个生产者以隔离的方式写入自己的分区。

关于apache-kafka - Kafka 多个生产者写入同一主题 - 消息和数据突发的排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24445308/

相关文章:

spring - Apache Kafka 与 tomcat 和 spring 的集成

go - 卡夫卡消费者组过期了吗?

amazon-s3 - 如何使用 Kafka S3 Sink Connector 中的 FieldPartitioner 创建分区

apache-kafka - Kafka 的retention.ms 没有在Kafka 0.10.2 中强制执行?

apache-kafka - 无法使用 CONDUKTOR UI 连接到 Kafka

spring-boot - Kafka Schema Registry 出现错误 Unexpected character ('<' (code 60)) : expected a valid value (number, String, array, object, 'true' , 'false' )

apache-kafka - 通过 zookeeper CLI 自动删除

java - 如何删除kafka消费者组(通过新的消费者api创建)?

java - 如何使用Java使用foreachRDD发送数据

apache-kafka - 如何恢复kafka消息?