Выбор графика задержки приложения Flink / Kafka - PullRequest
0 голосов
/ 27 января 2020

У меня есть приложение, которое получает твиты из топики Kafka c, имеет окно в одну секунду, а затем сохраняет эти твиты на Cassandra с помощью операции AssyncIO, которая позволяет открыть максимум 100 потоков (последний параметр оператора AsyncIO ) без какой-либо предварительной обработки данных: просто сохраняйте твиты по твитам с отметкой времени, когда они были сохранены.

Затем я подчеркнул, что приложение Flink отправило 3 миллиона твитов, и сделал график в Grafana, который показывает, сколько твитов сохраняется в базе данных, но этот график показывает некоторые выборки, не является непрерывной линией, и Я не могу понять почему.

Таким образом, вы можете видеть, что с интервалом в одну минуту он экономит 7к, затем переходит к 5к, а затем, например, к 2к. Буду признателен за любую помощь в попытке выяснить, почему! Большое спасибо!

enter image description here

1 Ответ

1 голос
/ 28 января 2020

Прежде всего, если вы хотите написать на Кассандре, я бы использовал разъем . Реализовать что-то подобное точно один раз вручную правильно очень сложно, если не почти невозможно.

Во-вторых, AsyncIO не запускает 100 потоков. На самом деле, он не запускает никаких тем для пользователей. Вы должны начать их самостоятельно любыми способами. Обычно он использует механизм обратного вызова внешних систем, где библиотеки имеют собственный пул соединений.

Если вы делаете синхронизирующие вызовы, вам нужно управлять своим собственным пулом потоков. Я рекомендую использовать Executors.newCachedThreadPool() и отправлять на него свои асин * c задачи. AsyncIO только поможет объединить результаты asyn c обратно в синхронный поток.

В-третьих, 100 потоков может быть довольно много, в зависимости от вашей настройки. Также обратите внимание, что если вы используете масштабирование Флинка (используя более одного слота на менеджер задач), то вы умножите количество используемых потоков.

...