我们目前每个主题使用一个制作人。出于显而易见的原因,我们正在考虑为多个主题切换到一个制作人。
现在,是否存在某个主题由于某种原因可能较慢而不是其他主题的情况?如果有这样的情况,它会如何与单个制作人产生多个主题?它会影响其他主题的吞吐量吗?
是否还有其他情况,将单个制作人用于多个主题可能不是一个好主意?
谢谢!
更新: 以下是我们迄今为止所尝试的内容:
我们简要地查看了代码,这是我们理解的内容: Kafka服务器为每个主题分区接受一批消息。 Map [TopicAndPartition,MessageSet]
它尝试在配置的超时内处理整个批处理,并发回包含成功和失败记录的响应。
现在让我们看一下主题级别可能出现的问题,以及这将如何影响整个批次:
1)并非所有主题的副本都可用: 假设批处理包含三个主题的数据:test1,test2,test3。 对于test3,并非所有副本都可用。领导者将立即检测到这种情况,并且记录将失败。在这种情况下,批处理不会延迟,test1和test2的吞吐量不会受到影响。
2)主题的副本很慢。 假设只有test3的副本很慢。在这种情况下,复制test3的消息将花费时间,这反过来会延迟整个批处理,从而影响主题test1和test2的吞吐量。
还有什么可能出错?
谢谢!
答案 0 :(得分:0)
我假设您的意思是从同一个应用程序中的多个生产者到单个生产者?
使用单个生产者不应该有缺点
可能有一些缺点,可以通过conf解决:
buffer.memory
,如果您想批量处理最好,{{ 1}}和max.request.size
。这取决于您的数据