В GCP есть несколько способов запуска логики обработки.У нас есть App Engine, Функции, Compute Engine, GKE, Cloud Run и многое другое.Из них Compute Engine и GKE обеспечивают контроль на самом низком уровне, что означает, что вы можете организовать код для выполнения 100% времени ... и в основном делать все, что захотите.Исходя из вашей истории, кажется, что Compute Engine будет тем, что вы хотите.Когда вы создаете Compute Engine, вам в основном предоставляется Виртуальная машина (обычно Linux), и вы просто запускаете любую логику / приложения, которые вам нужны в этой среде.Google взимает с вас плату за время работы Compute Engine.Если у вас всегда работает явное приложение Python, то вам будет выставлен счет 24x7 независимо от того, поступает ли трафик на самом деле.
Другие возможности, которые вы, вероятно, захотите рассмотреть, - это облачные функции.Облачная функция - это логика, которая запускается только при наличии активного запроса, который нужно обработать.GCP несет ответственность за пассивное прослушивание новых запросов без взимания платы за эту услугу.Когда приходит запрос, ваша логика выполняется, и вам выставляется счет только на тот период, когда ваша логика фактически выполняется.Cloud Run похож на Cloud Functions, но логика размещена в среде Kubernetes, а не в собственной.
Для Cloud Function входящие запросы могут поступать либо через запросы REST, либо через GCP Pub / Sub.В вашем описании ни один из них не применяется, поскольку вы получаете данные через MQTT.Это где Google IOT Core вступает в игру.Ядро Google IoT - это полнофункциональная среда для управления устройствами IoT.Основным среди этой истории является способность пассивно прослушивать входящие MQTT-запросы.Когда авторизованное устройство IoT отправляет запрос MQTT, ядро Google IoT автоматически пересылает содержание запроса MQTT через GCP Pub / Sub.Это затем отделяет механику поступающего IoT-сообщения от того, как оно будет в конечном итоге обрабатываться.Поскольку сообщение MQTT теперь опубликовано в GCP Pub / Sub, его можно использовать в качестве триггера для функции Google Cloud.
После всех этих частей ... одна возможность проверить, что может привести ксамым дешевым и динамически масштабируемым решением было бы:
IoT-устройство --- MQTT ---> IoT Core --- Pub / Sub ---> Облачная функция
Эта история в основном измениласьпарадигма от «Как я активно слушаю запросы в моем коде неопределенным образом» до «Как мне выполнить мой код при поступлении запроса».