Kafka Streams 中的状态存储与 Ktable

问题描述 投票:0回答:1

我是 Kafka 和 Kafka Streams 的新手。虽然我已经了解了 Kafka 和 Kafka Streams 的概念,并且在概念上感到自信,但有一件事让我感到困惑。是的,这是使用 Ktablestate store 之间的决定。

我正在构建一个有状态的应用程序,我需要在一段时间内存储应用程序的状态。我如何决定是否应该使用 Ktable/Global Ktable 还是状态存储?它们是相同的还是相互依赖的?老实说,我仍然不清楚两者之间的区别,因此无法对我的应用程序使用什么做出自信的决定。

apache-kafka apache-kafka-streams rocksdb ktable
1个回答
0
投票

KTable 和 GlobalKTable 的差异体现在消费者层面

表: Kafka 使用一个消费者 ID 运行应用程序,并聚合 ktable/globalktable 状态存储中的数据,即来自主题的键的最新值仅一次

K表: 如果 ktable 应用程序在两台机器上运行,ktable 状态存储将在不同机器上消耗不同的值

全局K表: 如果 ktable 应用程序在两台机器上运行,则 GlobalKtable 状态存储将在不同机器上消耗整个值

例如:

主题值 -> 1, 2, 3, 4, 5, 6

一台机器上的 ktable -> 1, 2, 3 第二台机器中的 ktable -> 4, 5, 6

一台机器上的全局 ktable -> 1, 2, 3, 4, 5, 6

第二台机器中的全局 ktable -> 1, 2, 3, 4, 5, 6

GlobalKTable 允许应用程序同步两台机器上 kafka 流的完整状态

© www.soinside.com 2019 - 2024. All rights reserved.