使用API​​网关/ Lambda / DynamoDB的AWS心跳服务

时间:2019-05-31 12:43:56

标签: amazon-web-services aws-lambda amazon-dynamodb throughput capacity

我正在使用本地Windows应用程序,我希望能够知道该应用程序何时脱机(不迟于一分钟的延迟)。

我当时正在考虑创建一个称为HeartbeatControllerAPI的api网关,此api将调用一个lambda,这反过来将在dynamodb表中设置该应用程序的最后一个心跳,即“ Heartbeats”,如下所示:

机器名称|最后的心跳

A 2:00 AM

B 2:10 AM

C 2:05 AM

因此,如果我有3台机器,如下所示:

机器1-已安装应用程序。

机器2-已安装应用程序。

机器3-已安装应用程序。

然后,尽管我每分钟都会像上面描述的那样完成所有机器的工作,然后我才能知道哪台机器处于脱机/在线状态。

这种方法正确吗?我担心(从计费和过载的角度来看)如果我有一百万台这样的机器会发生什么,而它们每一分钟都将访问api网关并更新dynamodb表

1 个答案:

答案 0 :(得分:1)

通常情况下,心跳则相反,在这种情况下,您将执行Lambda由CloudWatch事件触发(cron事件,每X分钟触发一次),然后Lambda会呼叫您的计算机并确认它们启动并运行。这样,您的机器就可以完成任务,您的心跳功能(Lambda)将每隔X分钟确认它们正在工作。

这也意味着您只需要一个Lambda即可使用很多机器(取决于性能,如果达到50台左右的机器,则可能会增加Lambda的数量)。

因此,如果您采用这种方法,则Lambda将由CloudWatch cron事件触发,请检查计算机是否正在运行,然后为每台计算机(如果正在运行)使用状态更新表,如果不是,您可能会向SNS主题发送一条消息(并订阅该主题),以便可以通知您一台计算机已关闭(如果该计算机是一台正在呼叫的计算机,则这也要复杂得多,因为如果它关闭了,那么您必须扫描表以获取最后更新的时间,这样可能会导致成本高昂且效率低下。)