通过至少一次保证,我了解在发生故障时可能会出现重复。但是,
1)Kafka Stream库执行提交的频率如何?
2)除了上述用户之外,用户是否还需要考虑提交?
3)是否有关于执行提交频率的最佳实践?
答案 0 :(得分:2)
Kafka Streams定期提交,可通过参数commit.interval.ms
进行配置(默认为30秒;如果启用了一次性处理,则默认为100毫秒)。
通常,用户无需手动提交。注意,用户没有完全控制提交,但只能请求提交:cf。 How to commit manually with Kafka Stream?
提交是同步点,如果过于频繁地提交(对于每个处理过的记录之后的极端示例),您的吞吐量会显着下降。它还高度依赖于应用程序,因为提交频率决定了应用程序处理的潜在重复数量(这也取决于输入数据速率)。因此,您需要考虑在您愿意容忍的情况下有多少重复。它还取决于应用程序重新处理数据所需的时间:在此期间,应用程序可能无法完全可用。总的来说,很难给出建议,你需要单独考虑所描述的每个应用程序的权衡。