Kafka主题顺序
Kafka topic order
我有一个 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!!!?)
如果能帮助理解这种行为,那就太好了。
Kafka 是一个分布式消息系统,因此即使它按顺序从源数据库中获取消息,但消息将根据定义的键分布在主题的多个分区上。
Kafka 保证维护每个分区的顺序而不是跨分区。
因此消费者可以以任何顺序从主题中获取消费消息,消费者端没有保证顺序。
如果您严格要求保持秩序,您可以使用单个分区主题,但在那种情况下,您可能会失去并行性。
我有一个 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!!!?)
如果能帮助理解这种行为,那就太好了。
Kafka 是一个分布式消息系统,因此即使它按顺序从源数据库中获取消息,但消息将根据定义的键分布在主题的多个分区上。 Kafka 保证维护每个分区的顺序而不是跨分区。
因此消费者可以以任何顺序从主题中获取消费消息,消费者端没有保证顺序。
如果您严格要求保持秩序,您可以使用单个分区主题,但在那种情况下,您可能会失去并行性。