我正在尝试了解 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/