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