Есть ли эффективный способ внешнего объединения нескольких (более двух) тем Кафки?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Есть ли эффективный способ внешнего объединения нескольких (более двух) тем Кафки?

Сообщение Anonymous »

Я хотел бы объединить несколько (обычно 2–10) тем Kafka по ключу, в идеале — с помощью API потоковой передачи. Все темы будут иметь одинаковый ключ и разделы. Один из способов сделать это объединение — создать KStream для каждой темы и связать вызовы KStream.outerJoin:

Код: Выделить всё

stream1
.outerJoin(stream2, ...)
.outerJoin(stream3, ...)
.outerJoin(stream4, ...)
Однако документация KStream.outerJoin предполагает, что каждый вызов externalJoin будет материализовать два входных потока, поэтому в приведенном выше примере материализуются не только потоки с 1 по 4, но также поток1.outerJoin(stream2, ...) иstream1.outerJoin(stream2, ...).outerJoin(stream3, ...). По сравнению с прямым соединением четырех потоков будет много ненужной сериализации, десериализации и ввода-вывода.

Другая проблема с описанным выше подходом заключается в том, что окно JoinWindow не будет единообразным для всех четырех входных потоков: одно окно соединения будет использоваться для объединения потоков 1 и 2, но затем для объединения этого потока и потока 3 будет использоваться отдельное окно объединения и т. д. Например, я укажите окно соединения в 10 секунд для каждого соединения, и записи с определенным ключом появятся в потоке 1 через 0 секунд, в потоке 2 через 6 секунд, в потоке 3 через 12 секунд и в потоке 4 через 18 секунд, объединенный элемент будет выведен через 18 секунд, что приведет к слишком большой задержке. Результаты зависят от порядка соединений, что кажется неестественным.

Есть ли лучший подход к многосторонним соединениям с использованием Kafka?

Подробнее здесь: https://stackoverflow.com/questions/448 ... fka-topics
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»