Мы создаем конвейер, используя поток данных Google. Одним из наших случаев является вызов сторонней службы для сохранения данных там.
Проблема в том, что этот сторонний сервис работает медленно (сохранение довольно сложно), но он может обрабатывать много одновременных соединений.
Мы обнаружили, что если мы создадим в ParDo ThreadPoolExectutor (100) и сделаем асинхронные вызовы вместо синхронизирующих вызовов, мы сможем сохранять намного больше данных в секунду. Но такой подход не хорош.
Что было бы хорошим подходом с использованием Dataflow? Очевидно, что вместо этого мы могли бы запустить Dataflow с 100 рабочими, но это не очень дешевое решение, особенно когда каждый сотрудник использует 5% ЦП.
У вас есть идеи для меня? Мы подумали об использовании PubSub для этого сервиса, но это сильно усложнит наше решение.
В прямом бегуне есть параметр targetParallelism , есть ли что-то похожее в бегуне потока данных?