【问题标题】:How does Kafka Streams Materialization work?Kafka Streams Materialization 是如何工作的?
【发布时间】:2020-05-10 21:32:10
【问题描述】:

问题 1:我读到 Kafka Streams 的所有有状态操作(例如 Aggregate、Count 等)都会在客户端实例上创建一个状态存储。当我们使用 Materialized.with 或 Materialized.as 以及有状态操作时有什么区别。它仅用于交互式查询吗?或者当我们只调用有状态操作与使用物化视图调用有状态操作时,内部是否还有其他事情发生?

问题 2:当 num.standby.replicas > 0 时内部会发生什么?是更改日志主题复制还是仅复制状态存储?副本如何获取更改?复制是如何进行的?

【问题讨论】:

    标签: apache-kafka apache-kafka-streams spring-kafka


    【解决方案1】:

    当我们使用 Materialized.with 或 Materialized.as 以及有状态操作时有什么区别。

    Materializes.as() 设置存储名称,从而启用存储以进行交互式查询 它还会影响底层更改日志主题的名称,因此您不应为已部署的应用程序更改它。除此之外,没有任何区别。

    当 num.standby.replicas > 0 时内部会发生什么?是更改日志主题复制还是仅复制状态存储?

    更改日志主题是根据代理/主题配置replication.factor 复制的。备用任务的数量与更改日志主题复制无关,而仅与客户端状态存储复制有关。备用任务,读取变更日志主题(活动任务写入)以维护复制状态。

    【讨论】:

    • 备用副本能否在活动任务运行时回答交互式查询?
    • 在 Kafka Streams 2.6 上,是的。这是一个全新的功能。
    • 所有有状态操作都产生状态存储吗?当我实现与不实现时,状态商店的人口和数据有什么不同吗?
    • Does all stateful operations produce a state store? -> 是的。如果没有国家商店,国家还会去哪里? -- 状态存储中的数据总是被物化(如果你不传入Materialized 参数,它只会使用一些默认配置来物化。
    • 这回答了我的问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2018-11-10
    • 1970-01-01
    • 1970-01-01
    • 2020-07-30
    • 2021-04-25
    • 2021-05-04
    • 1970-01-01
    相关资源
    最近更新 更多