Ank*_*ana 0 apache-kafka apache-kafka-streams
状态完整操作如何在具有多个实例的Kafka Stream应用程序中工作?让我们说我们有2个主题,每个A和B有2个分区.我们有一个流应用程序,它既消耗了两个主题,又有两个流之间的连接.
现在我们正在运行此流应用程序的2个实例.据我所知,每个实例将分配每个主题的2个分区之一.
现在,如果要连接的消息被应用程序的不同实例使用,联接将如何发生?我无法理解它.
虽然我测试了一个似乎工作正常的小流应用程序.我是否可以在不考虑流应用程序中定义的拓扑类型的情况下,始终增加任何类型应用程序的实例数量?
是否有任何文件可以让我了解其工作细节?
最大并行度单位是分区数.如果运行的实例数多于分区数,则过多的实例将处于空闲状态.
连接操作应符合以下要求:
加入时必须对输入数据进行共同分区.这意味着,要连接的输入主题应具有相同数量的分区.
这两个主题应该具有相同的分区策略,以便具有相同键的记录可以传递到相同的分区.如果不同,则有可能丢失记录.
示例:如果topic1有2个分区且topic2有3个分区,Join(topic1,topic2)则由于不相等的分区而失败.一旦你重新分配主题,让我们说3.现在Join(topic1, topic2)将工作.您可以最大限度地利用3个任务进行此操作.每个分区将以内部主题的形式在状态存储中维护其状态.默认情况下,KStream使用RocksDB来存储状态.
有关详细信息,请参阅以下内容:
https://cwiki.apache.org/confluence/display/KAFKA/Kafka+Streams+Internal+Data+Management https://docs.confluent.io/current/streams/developer-guide/dsl-api.html#streams -developer引导-DSL-加入
| 归档时间: |
|
| 查看次数: |
99 次 |
| 最近记录: |