Доклад

Асинхронная Java. Практика на примере Cassandra и Kafka

На русском языке

Мы занимаемся разработкой масштабируемой платформы, которая принимает из различных очередей большой поток бизнес-событий и производит расчет онлайн признаков для сервисов машинного обучения. Чтобы обеспечить скорости в тысячи событий в секунду и кратно большие запросы к подготовленным данным с миллисекундными задержками в их выдаче, нам пришлось изначально проектировать полностью асинхронное ядро с использованием CompletableFuture.

Рассчитанные признаки мы храним в Cassandra, с которой взаимодействуем через асинхронный API ее драйверов. В разработке и эксплуатации мы столкнулись с нюансами асинхронной обработки больших выборок из базы. Детально разберем, какие проблемы могут возникнуть и как с ними бороться.

Большинство событий для расчета нам поступает из множества топиков Kafka. Данные разнородны и не поддаются batch-обработке. Разбиение топиков на множество разделов, конечно, помогает решить задачу параллельной обработки событий. Однако это требует задействовать много системных потоков. И в целом API Kafka построен на колбэках, и работать с ними неудобно. Подробно расскажу о нашей реализации асинхронной отработки на CompletableFutures множества топиков на одном подключении/потоке.

Спикеры

Доклады