我们按以下格式记录大量数据:
{"record_id": "123abc", "version": 1, "status": "old_status", ...}
{"record_id": "123abc", "version": 2, "status": "new_status", ...}
然后我们使用Filebeat将这些日志从服务器发送到Kafka集群。由于日志数据量较小,因此效果很好。消息以与记录到日志文件相同的顺序出现在Kafka中。
现在我们已经达到了需要我们积极轮换日志的日志量,我们看到消息来自Kafka乱序。我认为发生的事情是Filebeat在日志文件旋转时创建一个新的收集器。像这样:
之前:
Filebeat harvester 1 -> log
后:
Filebeat harvester 2 -> log
Filebeat harvester 1 -> log.rotate
使用2台收割机,我认为文件会同时从两个文件发送到Kafka,这会导致Kafka中的乱序消息。 注意:我确认消息已发送到Kafka中的正确分区,因此消息排序问题不是由于日志被发送到单独的分区。
我的问题是: