Работник Google Dataflow практически простаивает из-за медленных вызовов ввода-вывода - PullRequest
0 голосов
/ 28 апреля 2018

Мы создаем конвейер, используя поток данных Google. Одним из наших случаев является вызов сторонней службы для сохранения данных там.

Проблема в том, что этот сторонний сервис работает медленно (сохранение довольно сложно), но он может обрабатывать много одновременных соединений.

Мы обнаружили, что если мы создадим в ParDo ThreadPoolExectutor (100) и сделаем асинхронные вызовы вместо синхронизирующих вызовов, мы сможем сохранять намного больше данных в секунду. Но такой подход не хорош.

Что было бы хорошим подходом с использованием Dataflow? Очевидно, что вместо этого мы могли бы запустить Dataflow с 100 рабочими, но это не очень дешевое решение, особенно когда каждый сотрудник использует 5% ЦП.

У вас есть идеи для меня? Мы подумали об использовании PubSub для этого сервиса, но это сильно усложнит наше решение.

В прямом бегуне есть параметр targetParallelism , есть ли что-то похожее в бегуне потока данных?

...