簡體   English   中英

Kafka中的動態流拓撲

[英]Dynamic Streams Topology in Kafka

使用Kafka Streams DSL創建Kafka Streams時https://kafka.apache.org/0110/documentation/streams/developer-guide

我們遇到了需要用新的拓撲定義更新Kafka流的情況。

例如:開始時,我們定義了一個拓撲以讀取一個主題(源)和目標主題(接收器)。 但是,在配置更改時,我們現在需要閱讀2個不同的主題(如果需要,請閱讀2個來源)並寫入單個目標主題。

從我們現在已經構建的內容來看,拓撲定義是硬編碼的,類似於處理器拓撲中的定義。

問題:

  1. 是否可以以聲明性的方式(例如在Json或其他方式中)定義拓撲,而無需對拓撲進行編碼?

  2. 是否可以重新加載現有的Kafka Stream以使用Kafka Streams拓撲的新定義?

  3. 對於上述#2,Kafka Streams DSL是否提供一種通過外部觸發器或系統調用“重新加載”新拓撲定義的方法?

我們正在使用JDK 1.8和Kafka DSL 2.2.0

謝謝,Ayusman

是否可以以聲明性的方式(例如在Json或其他方式中)定義拓撲,而無需對拓撲進行編碼?

KStreams DSL是聲明性的,但我認為您的意思不是DSL?

如果是這樣,答案是否定的。但是,您可能要看一下KSQL。

是否可以重新加載現有的Kafka Stream以使用Kafka Streams拓撲的新定義?

您的意思是說,現有的Kafka Streams 應用程序是否可以重新加載處理拓撲的新定義? 如果是這樣,答案是否定的。在這種情況下,您將部署新版本的應用程序。

根據舊/新拓撲的定義方式,對應用程序進行簡單的滾動升級就足夠了(大約:如果拓撲更改很小),但是可能需要分別部署新應用程序,然后在新應用程序部署完畢后進行部署。經過審查,停用舊應用程序。

注意:KStreams是一個Java庫,從設計上講,它不包括操作/管理使用KStreams庫的Java應用程序的功能。

對於上述#2,Kafka Streams DSL是否提供一種通過外部觸發器或系統調用“重新加載”新拓撲定義的方法?

沒有。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM