我正在努力了解卡夫卡。假设我有多个制作人,每个人都写同一个主题。 (由于设计和我们使用avro进行序列化,因此无法获得更多主题)因为我们的信息太大,我们需要将其分成小部分,然后将其发送给kafka。
在这种情况下 - 来自不同生产者的消息可以混合吗? 我该如何避免这种情况?任何想法
此外,我们有巨大的数据库,就像2分钟内会有1000条消息,接下来5到7分钟的消息很少,我们在这种情况下可以做些什么
答案 0 :(得分:5)
你呢?您运行了基本测试并遇到了一些问题?你试过调整缓冲区吗?我很确定kafka可以毫不费力地处理相对较大的消息(数十兆字节)。实际上,与大量微小消息相比,您可能会获得更好的吞吐量。因为我们的信息太大,我们需要将其分成小部分,然后将其发送给kafka。
此外,我们有巨大的数据库,就像2分钟内会有1000条消息,接下来5到7分钟的消息很少,我们在这种情况下可以做些什么
现代服务器计算机上的单个kafka代理可以轻松处理~20k-40k消息/ 每秒(批量处理1000条消息,每个2k大小,同步模式)。我没有看到那里的问题。
来自不同制作人的消息是否可以混合?
是的,他们可能是混合的。事实上,kafka协议并没有很好地定义这个时刻,特定的实现可能会改变这种行为,因此对于稳定的解决方案,请看下面的部分。
如何避免这种情况?
Kafka有一个分区的概念:每个主题默认都有1个分区,每个分区都可以被认为是并行的一个单元。设置适当的分区程序,以便每个生成器以隔离的方式写入它自己的分区。