apache-kafka - Kafka 流:流线程与存储
问题描述
假设我们有一个实例,其配置如下,并且在商店中维护状态。
主题 - 1 个
分区 - 6
num.stream.threads - 6
拓扑
源 - 1 个
低级处理器 - 3(每日、每月和每年聚合各一个处理器)接收
器 - 3
- 使用上述拓扑和主题分区可以执行多少个并行任务?
如果为 Daily 处理器分配了 2 个并行任务,并且如果 punctuate 计划每 30 分钟运行一次,并且在覆盖中如果我们将所有存储转发到接收器 1,则键值存储是否会发布两次到接收器,因为 2 个并行任务共享同一个存储,或者每个任务都有自己的存储,并且只会发布与它们分配的分区相对应的数据,这些分区被持久保存在各自的存储中?
KeyValueIterator<String, House> keyValueIterator = houseStore.all(); while (keyValueIterator.hasNext()) { KeyValue<String, House> next = keyValueIterator.next(); context.forward(next.key, next.value); } keyValueIterator.close();
如果我们改为使用 KTable(每天、每月和每年聚合一个)高级 DSL,将会有多少任务?是否可以有两个并行任务更新同一个 KTable(比如每天)?
解决方案
Kafka Streams 将创建 6 个任务,因为源主题有 6 个分区。状态,将被划分为 6 个分片,每个任务一个分片。因此,任务中的本地存储是任务专有的,仅包含相应分片的数据。如果您按任务扫描整个商店,您将不会在输出主题中获得重复数据,因为每个分片中的数据不同。
推荐阅读
- html - Jumbotron 打破移动网站上的导航栏
- c++ - 封装 H.264 的 C/C++ FLV 多路复用器未按预期工作
- go - Slice 不断在循环中重新填充旧条目
- javascript - react-native-router-flux 标签栏实现
- typescript - rxjs forkJoin Observable
不可分配给 OperatorFunction 类型的参数 - android - 如何确定要添加到 android.widget.Space 的 Android gradle 依赖项的库和版本
- python - matplotlib:为什么用 pyplot.setp() 设置网格会导致错误?
- python - 为 Qlistview 的项目添加图标
- php - 还有哪些其他因素可能导致我的 php 脚本超时?
- ios - 屏幕背景颜色