【发布时间】:2019-04-08 17:47:11
【问题描述】:
我们有客户使用的网络应用程序,他们可以选择创建报告。报告包含电子邮件和预定时间(例如:每天上午 9 点)。
当预定时间与当前时间匹配时,网络应用会做一些工作并将结果发送到电子邮件。
我有一个需求,我需要在 swf 之上实现可扩展的 cron 架构。
我需要的架构如下所示:
- 用户创建报告(完成)
- Webapp 将报表保存到数据库,并通过 SQS(简单查询服务)将报表数据和定时器发送到 cron 微服务。 (完成)
- Cron 微服务读取传入的 SQS 消息,并在计时器到时发回 SQS 消息。 (需要这个)
- Webapp 读取 SQS 消息并触发 Data Analyzer 和 Emailer 函数发送分析数据。 (完成)
从我了解到 SWF 服务是我们可以创建 cron 作业和 SWF 自动缩放。如何使用 SWF 创建可扩展的 cron 微服务?
欢迎任何建议...
附: Web应用是用nodejs写的,用nodejs写微服务会很好。
更新 1: 在花了一些时间研究可能的解决方案后, 我找到了https://github.com/capside/CloudCron 项目。但它依赖于 cloudwatch 事件。对于许多计划任务,它可能会收取很多 IMO 费用。
更新 2: Banjo Obayomi 建议将 Lambda 函数与 SQS 和 CWE 一起使用。
解决方案 1:
- Webapp 发送 SQS 消息。
- SQS 消息触发 Lambda 函数1
- Lambda 函数创建 CWE 规则
- CWE 规则触发 Lambda 函数2
- Lambda 函数 2 将 SQS 消息发送回 webapp。
限制: 我们只能为每个区域创建 100 个 CWE 规则。这意味着 webapp 不能生成超过 100 个预定日期的报告。
【问题讨论】:
标签: node.js amazon-web-services cron amazon-sqs amazon-swf