【问题标题】:How to update data in Kafka/Kafka stream?如何更新 Kafka/Kafka 流中的数据?
【发布时间】:2020-07-05 15:39:04
【问题描述】:

假设有 Kafka 主题订单。数据以 JSON 格式存储:

{
   "order_id": 1,
   "status": 1
}

Status 定义订单状态(待定 - 1,已完成 - 2)。

完成后如何更改?

据我所知,Kafka 主题是不可变的,我无法更改消息 JSON,只需创建一个具有更改值的新消息,对吗?

【问题讨论】:

    标签: apache-kafka kafka-topic


    【解决方案1】:

    如果您的订单更改了状态,正在更改状态的进程应该在主题中生成一条带有新状态的新消息。 kafka 流应用程序可以对新消息做出反应,进行转换聚合或类似操作,并在新主题中输出修改/聚合的消息......所以你需要一个 kafka 生产者,当订单状态发生变化时,会向订单主题生成消息。

    【讨论】:

    • 谢谢,所以流从主题中读取数据?并且可以转换数据并将其放到永久表中?
    • kafka 中的 Ktable 是对主题的抽象。这意味着它是一种结构,其中值按键分组,每个键包含系列中的最后一个值。流的输出被物化为另一个主题...
    • 所以,如果我有可用用户的主题,请提出一个子问题。每个用户都必须确认自己。我应该创建另一个主题确认用户吗?
    • 概念是否正确 - 一个实体发生变化 - 是单独的主题?
    • 这是有道理的。因此,您将有一个主题 user_registration_requests,当用户确认时,您将他们放入一个新主题 register_users。这使得在您的数据结构之上构建功能变得更加容易......因此,例如,如果您希望注册请求在两天内到期,您可以在主题中执行两天的保留策略,然后如果用户没有注册,挂起的注册将被自动删除。到那时,用户令牌应该已经过期。这增加了灵活性。
    猜你喜欢
    • 2021-08-21
    • 2021-08-30
    • 1970-01-01
    • 2018-04-06
    • 1970-01-01
    • 2017-08-17
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    相关资源
    最近更新 更多