【问题标题】:Kafka topic orderKafka主题顺序
【发布时间】:2020-10-02 12:49:26
【问题描述】:

我有一个使用类似以下内容的 Kafka 连接器:

SELECT CAST ( id as VARCHAR) as key_id, id ...
FROM table1 
JOIN (SELECT id as tID FROM table1 t WHERE t.id = 87002) v 
ON v.tID = id 

如果我对数据库执行 ORDER BY ID,我会按照我期望的顺序使用以下 ID 获取记录

322633
324066
324084
324107

我已经指定了连接器拉动增量,因此连接器添加了以下内容:

WHERE id > ? ORDER BY id ASC 

这就是我感到困惑的地方。在此连接器写入的流中,记录以不同的顺序显示!他们在

322633
324084
324107
324066   (huh!!!?) 

任何帮助理解这种行为都会很棒。

【问题讨论】:

  • 您使用了多少主题分区以及如何显示订单 ID?

标签: jdbc apache-kafka apache-kafka-connect


【解决方案1】:

Kafka 是一个分布式消息系统,因此即使它从源数据库中按顺序获取消息,但消息将根据定义的键分布在主题的多个分区上。 Kafka 保证维护每个分区的顺序,而不是跨分区。

因此消费者可以以任何顺序从主题中获取消费消息,消费者端没有保证顺序。

如果您严格要求维护顺序,则可以使用单个分区主题,但在这种情况下,您可能会失去并行性。

【讨论】:

  • 谢谢。所以我是否正确,选项是使用单个分区,还是确保键映射到需要按顺序排列的记录的同一分区。
猜你喜欢
  • 1970-01-01
  • 2021-03-09
  • 1970-01-01
  • 2020-10-17
  • 2020-05-08
  • 2022-10-26
  • 2018-02-08
  • 2019-06-17
  • 1970-01-01
相关资源
最近更新 更多