0

当自动缩放过程缩小并选择要终止的节点/pod 时,它会为已经进入目标节点/pod 的 HTTP 请求提供一些宽限期,以便 HTTP 请求有时间完成处理和响应。同样在此期间,负载均衡器停止向即将终止的节点/pod 发送新请求。

我的问题是,如果在其中一个进程/容器中有一个 Kafka 消费者不知道它的包含进程即将被终止,并且它一直在消耗来自 Kafka 和进程的数据,该怎么办。当消费者在处理消费数据的过程中,进程有可能被终止。

那么,是否有任何解决方案让 Kafka 消费者停止消费并给它一些宽限期来处理已经消费的记录?类似于 HTTP 请求的宽限期如何?

可能会有一些想法,例如,我们可以在成功处理后手动提交 kafka 偏移量。但并非所有场景都适合手动提交。可能我们必须在记录被消费后立即手动提交,然后处理,或者只是让消费者自动提交。

4

1 回答 1

1

大多数编程语言都允许您捕获容器将接收的 SIGKILL/SIGTERM OS 信号。

从信号处理程序中,您可以暂停/关闭消费者实例。

请记住,您不能将消费者应用程序扩展到主题分区计数之外

于 2022-02-09T16:19:11.463 回答