当前位置: 首页 > 知识库问答 >
问题:

debezium中的保证事件顺序

郭麒
2023-03-14
{
 "schema": { 
    "type": "struct",
 "name": "mysql-server-1.inventory.customers.Key", 
 "optional": false, 
 "fields": [ 
      {
        "field": "id",
        "type": "int32",
        "optional": false
      }
    ]
  },
 "payload": { 
    "id": 1001
  }
}
  1. 问题1:表customersid=1001中的行的事件总是具有相同的键,对吗?
  2. 问题2:由于kafka会将具有相同密钥的数据发送到相同分区,所以我可以说customers.id=1001的事件可以有序地使用,对吗?
  3. 问题3:如果我将主键更改为varchar,那么该键将发生变化,因此分区号可能会发生变化,在这种情况下,我如何保证事件总是有序地消耗?

共有1个答案

百里京
2023-03-14

1:是的。

2:是的。

3:如果更改主键--或者只是它的值,甚至是它的类型--在更改之前和之后的事件之间没有任何排序保证。

 类似资料:
  • TL;DR:目前保证Flink中事件时间顺序的最佳解决方案是什么? 我使用Flink 1.8.0和Kafka 2.2.1。我需要通过事件时间戳保证事件的正确顺序。我每隔1秒生成周期性水印。我使用Flink Kafka消费者与AscendingTimestampExtractor: 然后处理: 我意识到,对于在同一毫秒或几毫秒之后发生的无序事件,Flink不会纠正顺序。我在文档中发现: 水印触发所有

  • 我使用的debezium带有一个重路由选项,它将所有表的更改发送到仅一个kafka主题。有了这样的配置,我确信我可以从spark中读到独特的Kafka主题。 但我的问题是:如果我使用debezium而不使用重路由选项,并且我在不同的Kafka主题中对每个表进行了更改,我如何保证我以正确的顺序阅读了所有主题的事件? 我知道我可以使用Spark来订购它,例如通过时间戳,但如果说,一个kafka主题离线

  • 我们正在使用Debezium+PostgreSQL。 注意,我们得到了用于创建、读取、更新和删除的4种类型的事件-c、r、u和D。 事件的读取类型未用于我们的应用程序。实际上,我想不出'r'事件的用例,除非我们正在审计或镜像事务的活动。 我从一个贡献者那里得到了使用snapshot.mode的线索。我想当Debezium创建一个快照时必须要做的事情。我不知道怎么做。

  • 问题内容: 我特别想知道PostgreSQL。给出以下人为的示例: 从外部查询返回的名称是否保证与内部查询的顺序相同? 问题答案: 不,在外部查询中按以下顺序排序: 内部(子)查询返回结果集。如果按此顺序进行排序,则保证从内部(子)查询传递到外部查询的中间结果集将按照您指定的方式进行排序,但是在外部查询中不对结果进行排序通过处理内部查询结果集生成的结果集,不能保证以任何方式进行排序。

  • 我想在Java对象中处理列表。我必须确保处理所有的元素,以便我收到他们。 因此,我是否应该对我使用的每个调用? 或者,只要不使用并行性,只使用流就足够了吗?

  • 阅读这篇关于主题分区中消息排序的文章:https://blog.softwaremill.com/does-kafka-really-guarantee-the-order-of-messages-3ca849fd19d2 允许在不设置最大值的情况下重试。航班请求。每连接到1可能会更改记录的顺序,因为如果将两个批发送到单个分区,第一个失败并重试,但第二个成功,则第二个批中的记录可能会首先出现。 根