java - Kakfa - 在运行时更改拓扑属性
问题描述
我目前正在运行一组拓扑,我想在运行时更改拓扑属性,例如
- 更改线程数
- 将源主题添加到现有主题列表
- 添加接收器
是否可以在不停止 kafka 流的情况下在运行时更改属性。我的一个想法是停止 kafka 流,然后加载这些配置并重新开始。但似乎不是一个理想的解决方案。任何人都可以提出更好的方法吗?
解决方案
这取决于。更改实例的线程数很容易。您只需要客户close()
端KafkaStreams
,更改配置,创建一个新客户端并重新启动它。大多数人会通过完全重启相应的 JVM 来做到这一点。
添加源主题和接收主题并不容易。特别是对于源主题,您需要停止所有实例,然后将它们一一重启,包括新的源主题。原因是,使用的分区分配器假定所有实例都订阅完全相同的主题。如果违反此假设,即如果某些实例订阅了新主题,则新主题的这些分区可能会分配给尚未更新的“旧”实例,这将导致“旧”实例崩溃实例不知道如何处理它没有订阅的分配分区。
推荐阅读
- python - 如果 BaseModel 得到意外参数,如何让 pydantic 引发 ValidationError
- python - 有没有办法从 get_queryset 返回两个组合列表,而不仅仅是查询集?
- javascript - 加载 mat-tab 时会触发 selectTabChange 事件,因为当我们在加载后选择任何选项卡时应该触发它。角材料选项卡
- kubernetes - 阻止 k8s 作业的执行,直到在 helm 图表中完成另一个作业
- html - 仅使用 html 设置 div 背景颜色
- typescript - ESLint 不相信我在我的 tsconfig 中包含了 .vue 文件
- javascript - overflow-y 的滚动条从底部开始
- javascript - ./node_modules/rc-align/es/Align.js 中的错误
- javascript - Angular - 表格排序不适用于嵌套对象
- google-chrome-extension - 如何知道我的 chrome 扩展需要哪些权限?