Я хотел бы увидеть пример кеширования с использованием гуавы или использования State.
тим построить конвейер потоковой передачи данных Cloud, который принимает события из Pubsub и выполняет несколько ETL-подобных операций для каждого отдельного события. Одна из этих операций заключается в том, что каждое событие имеетидентификатор устройства которые должны быть преобразованы в другое значение (давайте назовем егосопоставляются-идентификатор), отображение изУстройство-id-> сопоставляются-идентификатор предоставляется внешним сервисом через REST API. Такой жеидентификатор устройства может повторяться для нескольких событий - так что ониУстройство-id-> сопоставляются-идентификатор сопоставления могут быть кэшированы и использованы повторно. Поскольку мы можем иметь дело с 3M событиями в секунду в пике через конвейер, вызов к REST API необходимо максимально сократить, а также оптимизировать, когда вызовы действительно необходимы.
Имея в виду эту настройку, у меня есть следующие вопросы.
Чтобы оптимизировать вызов API REST, обеспечивает ли Dataflow какие-либо встроенные функции оптимизации, такие как пул соединений, или, если мы решим использовать наши собственные такие механизмы, есть ли какие-то ограничения / ограничения, которые мы должны учитывать?
Мы рассмотрим некоторые параметры кэширования в памяти, чтобы локально кэшировать сопоставления, некоторые из которых также поддерживаются локальными файлами. Итак, существуют ли какие-либо ограничения в отношении того, сколько памяти (в виде доли от общей памяти экземпляров) может использовать этот кэш, не влияя на обычные операции потока данных на рабочих? если мы используем кэш с файловой поддержкой, есть ли путь к каждому рабочему, который будет безопасно использовать само приложение для создания этих файлов?
Количество уникальныхидентификатор устройства может составлять порядка нескольких миллионов, поэтому не все эти сопоставления могут храниться в каждом экземпляре. Таким образом, чтобы иметь возможность лучше использовать локальный кеш, нам нужно получить некоторое сходство междуидентификатор устройства и рабочие, где они обрабатываются. Я могу сделать групповой на основеидентификатор устройства до стадии, где происходит это преобразование. Если я это сделаю, есть ли гарантия того жеидентификатор устройства будет более или менее обрабатываться одним и тем же работником? если есть какая-то разумная гарантия, то мне не пришлось бы использовать внешний REST API большую часть времени, кроме первого вызова, что должно быть хорошо. Или есть лучший способ обеспечить такое сходство между идентификаторами и работниками.
Спасибо