Почему в API Kafka Streams отсутствует поддержка асинхронных / неблокирующих операций? - PullRequest
1 голос
/ 31 мая 2019

Мне интересно, почему в Kafka Stream API отсутствует неблокирующая поддержка с помощью простых обратных вызовов, Java CompletableFuture или Scala Futures.

Я понимаю, что порядок в разделе необходимо поддерживать, но в разных разделах я не вижу причин для достижения порядка путем блокировки дорогого ресурса: потока.

, т.е. когда я позволяюмое приложение Kafka Streams с вызовом внешней службы, например, в mapValues, запущенном на 1 сервере, и у меня более тысячи разделов, я, вероятно, заблокирую машину, потому что все потоки заблокированы.Было бы неплохо иметь такой API-метод, как mapValuesAsync (), не правда ли?

Также представьте, что в приложении Kafka Stream с несколькими операциями блокировки в потоке нужно было бы меньше разделов для каждой темы, чтобы запуститьв проблему.Потеря потоков здесь не выглядит как хороший дизайн API.

Планируется ли какая-либо поддержка для этого?Или я здесь что-то наблюдаю?

1 Ответ

1 голос
/ 03 июня 2019

Асинхронная обработка обычно затруднена в потоковой обработке. Речь идет не только о заказе, но и об отказоустойчивости, отслеживании прогресса и т. Д.

Это не невозможно поддержать, хотя на самом деле уже есть проектное предложение для него: https://cwiki.apache.org/confluence/display/KAFKA/KIP-408%3A+Add+Asynchronous+Processing+To+Kafka+Streams

Не стесняйтесь помогать строить эту функцию!

...