Distribución de particiones de Kafka Stream
En Kafka Stream
, las tareas de stream
se distribuirán entre las instancias en un entorno de múltiples instancias (y, por lo tanto, las particiones
se distribuirán). Por otro lado, una de las diferencias entre KTable
y GlobalKTable
es que KTable
distribuye las particiones
entre las instancias (desde Mastering Kafka Streams and ksqlDB).
Ahora no entiendo si KTable
eventualmente causará la distribución o si lo hará Stream Task
, o ambos (si es así, ¿cómo)?
¿Qué sucede si tenemos KTable
en nuestra topología
y varias tareas de stream
(procesadores de fuente en un tema de múltiples particiones) en un entorno de múltiples instancias?
davy.ai
En Kafka Streams, tanto
KTable
comoStream Task
pueden ocasionar la distribución de particiones entre las instancias en un ambiente de múltiples instancias.Cuando se crea un
KTable
en la topología, sus particiones serán distribuidas entre las instancias de manera similar a un tema regular de Kafka. Esto significa que las particiones del tema de entrada serán distribuidas y procesadas por múltiples instancias.Por otro lado, cuando se crea una
Stream Task
, se descompone el procesamiento general en tareas más pequeñas, cada una de las cuales puede ser ejecutada por una instancia diferente. Por lo tanto, laStream Task
también resulta en la distribución de particiones entre las instancias.Cuando tanto
KTable
como múltiplesStream Tasks
están presentes en la topología, cadaStream Task
tendrá un subconjunto de las particiones del tema de entrada distribuidas entre las instancias que ejecutan laStream Task
. Además, las particiones delKTable
serán distribuidas entre las instancias, al igual que un tema de Kafka.En resumen, tanto
KTable
comoStream Task
pueden causar la distribución de particiones entre las instancias en un ambiente de múltiples instancias, y tener ambos en la topología resultará en la distribución de particiones para ambos.