Как я могу сохранить некоторые правила или конфигурацию в облаке Google, а затем вызвать их для обработки данных pubsub topi c в облачных функциях? - PullRequest
0 голосов
/ 07 февраля 2020

Я работаю с облачными функциями Google. Я работаю с серверными приложениями, поэтому не знаю много о мире без серверов.

У меня есть сценарий, в котором у меня есть два вида в хранилище данных Google: iot_kind и config_kind. Один тип имеет конфигурацию, которая похожа на таблицу поиска, а другой тип имеет нормальные значения полезной нагрузки.

Я публикую данные с устройства IoT в pubsub topi c и передаю эти данные в облачные функции.

например, полезная нагрузка IoT равна

{"id":"213213", 'price': 20, 'name':"some_name"}

, затем я запрашиваю конфигурацию KIND и извлекаю из нее некоторые данные, такие как множитель цены

select * 
from config_kind 
where id = "213213" #lets say output is 2

Затем я умножаю цену * 2 и сохраняя его в IoT_kind, например, value = 40

Теперь, таким образом, мне приходится выполнять чтение каждый раз, когда я получаю данные в облачную функцию, которая, на мой взгляд, довольно дорогая, а также немного обрабатывается.

Есть ли лучший способ сделать это? Например, я сохраняю последнюю конфигурацию где-нибудь, а затем, когда появляется полезная нагрузка, он видит конфигурацию и выполняет обработку в соответствии с конфигурацией, а затем сохраняет ее в базе данных?

А можно ли сделать что-то вроде создания облачной функции и сохранить последнее значение тут же вызывать эту облачную функцию из другой облачной функции, чтобы получить значения из нее? это будет дешевле или дешевле? Большое спасибо!

1 Ответ

1 голос
/ 07 февраля 2020

Облачная функция - это служба без сервера и без сохранения состояния. Когда экземпляр создан, он некоторое время жил и был остановлен. Диск не монтируется, все работает в памяти. Это означает, что вы не можете сохранять какие-либо значения в нем постоянно.

В любом случае, у вас есть 3 решения для уменьшения количества конфигураций, считываемых в хранилище данных

  • Даже если вы не можете Сохраняйте постоянные данные, вы все равно можете хранить их в памяти (до 2 ГБ памяти, включая ваши приложения). Таким образом, вы должны выполнить первый запрос к хранилищу данных, а затем вы можете сохранить данные конфигурации в карте, определенной как глобальная переменная. Поскольку облачные функции могут обрабатывать только 1 запрос в то же время, когда у вас нет условия гонки (Это не то же самое с Cloud Run например)
  • Если ваша конфигурация меняется не часто, вы можете сохранить ее в файл и сохранить в облачном хранилище. В начале функции вы загружаете файл (и сохраняете его в глобальную переменную, как и прежде, для чтения только один раз) и выполняете поиск в файле. Это работает, только если размер файла конфигурации ниже предела памяти функций.
  • Если стоимость чтения превышает 50 $ в месяц, вы можете использовать базу данных Cloud SQL вместо хранилища данных.

Это имеет смысл для вас?

...