当前位置 : 主页 > 网页制作 > Nodejs >

node.js – AWS之上的可扩展cron体系结构

来源:互联网 收集:自由互联 发布时间:2021-06-16
我们有客户使用的Web应用程序,他们可以选择创建报告.报告包含电子邮件和预定时间(例如:每天上午9点). 当预定时间与当前时间匹配时,Web应用程序会执行某些操作并将结果发送到电子
我们有客户使用的Web应用程序,他们可以选择创建报告.报告包含电子邮件和预定时间(例如:每天上午9点).

当预定时间与当前时间匹配时,Web应用程序会执行某些操作并将结果发送到电子邮件.

我有一个要求,我需要在swf之上实现可扩展的cron架构.

我需要的架构如下所示:

>用户创建报告(完成)
> Webapp将报告保存到数据库,并通过SQS(简单查询服务)将报告数据和计时器发送到cron微服务. (DONE)
> Cron微服务读取传入的SQS消息,并在计时器结束后发回SQS消息. (需要这个)
> Webapp读取SQS消息并触发Data Analyzer和Emailer功能以发送分析数据. (DONE)

从我读到的SWF服务是我们可以创建cron作业和SWF autoscales.如何使用SWF创建可扩展的cron微服务?

对任何建议开放……

附: Web应用程序是用nodejs编写的,在nodejs中编写微服务会很好.

更新1:花了一些时间研究可能的解决方案,
我找到了https://github.com/capside/CloudCron项目.但它依赖于cloudwatch事件.对于许多预定的任务,它可能会收取很多IMO.

更新2:
Banjo Obayomi建议在SQS和CWE中使用Lambda函数.

解决方案1:

> Webapp发送SQS消息.
> SQS消息触发Lambda function1
> Lambda函数创建CWE规则
> CWE规则触发Lambda function2
> Lambda function2将SQS消息发送回webapp.

限制:
我们每个地区只能创建100个CWE规则.这意味着webapp无法生成超过100个具有计划日期的报告.

链接:
cron-in-aws-with-lambda-function

听起来你可以使用AWS Lambda作为你的摄取点,从传入的SQS消息中获取函数触发器,进行处理然后再发送SQS消息.

https://aws.amazon.com/blogs/aws/aws-lambda-adds-amazon-simple-queue-service-to-supported-event-sources/

网友评论