Служба пульса AWS с использованием API Gateway / Lambda / DynamoDB - PullRequest
0 голосов
/ 31 мая 2019

Я использую локальное приложение для Windows и хочу знать, когда это приложение находится в автономном режиме (не позднее одной минуты).

Я думал о создании шлюза API под названием HeartbeatControllerAPI, и этот API будет вызывать лямбду, которая, в свою очередь, установит последний пульс приложения внутри таблицы Dynamodb под названием «Heartbeats», выглядит так:

Имя машины | Последнее сердцебиение

2:00

B 2:10

C 2:05

Поэтому, если у меня есть 3 машины следующим образом:

Машина 1 - с установленным приложением.

Машина 2 - с установленным приложением.

Машина 3 - с установленным приложением.

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

Является ли этот метод правильным? Я волнуюсь (с точки зрения биллинга и перегрузки), что случилось бы, если бы у меня было 1 миллион таких машин, тогда как в каждую минуту все они будут обращаться к шлюзу API и обновлять таблицу DynamodB

1 Ответ

1 голос
/ 31 мая 2019

Как правило, сердцебиение - это наоборот, в вашем случае вы бы сделали что-то вроде запуска Lambda с помощью события CloudWatch (событие cron, срабатывание каждые X минут), и что Lambda будет вызывать ваши машины и подтверждать, что они и работает. Таким образом, ваши машины останутся для выполнения своей задачи, и ваша функция сердцебиения (лямбда) будет подтверждать, что они работают каждые X минут.

Это также означает, что вам потребуется только одна лямбда для большого количества машин (в зависимости от производительности, вы можете увеличить количество лямбд, если вы достигнете примерно 50 машин).

Так что, если вы будете следовать этому подходу, ваша лямбда будет вызвана событием cron CloudWatch, проверьте, работают ли машины, и затем для каждой машины, если они работают, обновит таблицу со статусом, а если нет, Вы могли бы, возможно, отправить сообщение в тему SNS (и подписаться на эту тему), чтобы вы могли получать уведомления о том, что машина не работает (это также намного сложнее, если машина вызывает), потому что если он выключен, тогда вам придется сканировать таблицу в последний раз, это может стать дорогостоящим и неэффективным).

...