childe / gohangout

使用 golang 模仿的 Logstash。用于消费 Kafka 数据,处理后写入 ES、Clickhouse 等。
MIT License
1.01k stars 234 forks source link

Kafka manual commit #232

Closed fantaxy closed 9 months ago

fantaxy commented 11 months ago
  1. 支持worker队列机制
  2. 支持ck flush后再commit kafka
childe commented 10 months ago

这个 PR 内容有点多,我需要慢慢看看 :(

不过粗看下来,我目前合不了这个 PR。

主要是这个机制仅仅支持了一个新加入的 sarama input,和我对 Gohangout 的构想有些不一样。

然后,每个 event 都 commit 一下,对 kafka 的压力比较大,我建议你如果生产上已经在用的话,可以改进一下这一点。

我会再细看一下你的代码,了解学习下你的想法~

fantaxy commented 10 months ago

抱歉,提交得有些匆忙。 不过这里我理解倒不会每个event都commit,sarama的MarkOffset的说明: // Note: calling MarkOffset does not necessarily commit the offset to the backend // store immediately for efficiency reasons, and it may never be committed if // your application crashes. This means that you may end up processing the same // message twice, and your processing should ideally be idempotent. MarkOffset(topic string, partition int32, offset int64, metadata string) 实际效果就是,commit还是autocommit打开后按设置的时间间隔触发的,但offset是在event实际处理完才去mark。

新加入的sarama input主要就是为了使用这个MarkOffset的机制。

childe commented 9 months ago

@fantaxy 抱歉我先把这个 PR 关上了 :(