首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >计划电子邮件的Cron作业与任务计划器表

计划电子邮件的Cron作业与任务计划器表
EN

Stack Overflow用户
提问于 2021-01-09 14:44:12
回答 3查看 474关注 0票数 1

前言:我有一个web应用,后端是基于无服务器架构的。它基本上是一个托管在亚马逊网络服务上的放大应用程序,带有dynamoDB数据库。我了解到有可能创建一个排序more here的任务调度系统。这篇文章的简短总结是“可以创建一个任务调度表,利用TTL和dynamoDB流在特定时间执行lambda函数。TTL指定要删除的记录的设置时间,我们可以在dynamoDB流中捕获此删除事件,并根据流中的信息运行一些任务”。

问题:目标是向注册了我们服务的用户发送一系列电子邮件。每个注册的用户都会收到一系列的“入门”电子邮件。第一封电子邮件在用户注册24小时后发送,第二封在3天后发送,第三封恰好在注册7天后发送。

我知道cron工作在这里是如何合适的,但它对我来说似乎有点低效。我基本上必须在users表中搜索其注册时间落在特定24小时内的用户,并将电子邮件发送给用户,而使用任务计划器表,我可以向表中添加任务(类似于send first email to user300,其TTL为我想要发送它的时间),并侦听用于运行任务的删除事件。不需要每天运行cron作业,只需要一个函数来处理每个任务。

我认为这更像是性能与存储的问题。有一个任务计划器表将占用空间,如果我们将所有要发送给用户的电子邮件作为表上的任务(每个要发送给特定用户的电子邮件都是它自己的任务),那么每次用户注册时,我都会看到任务计划器表为每n个注册用户增加了3n条记录。但这可能不是问题,因为任务在运行后会被删除。我不知道使用cron作业来完成此特定任务的性能成本,因此我在这里。我也可能错了,运行和更新这个任务调度器表的成本可能比cron作业的成本更高。

我最初考虑建立一个虚拟用户表,同时运行cron和任务调度程序,并记录运行这两个程序的成本,但您可以想象这将花费多少时间和精力。

因此,我想我的问题是,在性能和成本方面,哪种解决方案更有效?

EN

回答 3

Stack Overflow用户

发布于 2021-01-09 17:48:41

这里没有完美的解决方案。请记住,Dynamodb TTL最多需要48小时才能调用,因此这可能是不可接受的。使用Lambda的CRON Job很便宜,而且很容易设置。您还可以使用SQS并使用daily CRON填充它。Yan Cui写了一篇关于这个问题的很棒的文章https://theburningmonk.com/2019/03/dynamodb-ttl-as-an-ad-hoc-scheduling-mechanism/

票数 2
EN

Stack Overflow用户

发布于 2021-01-09 15:58:48

这可能不是一个确切的答案。根据你链接的medium文章,这家伙有一个合理的理由,为什么TTL和dynamoDB流比你重申的cron工作更好。设置cron作业更容易,也更便宜(免费),我怀疑除非数据库很大,否则性能会变得更差。我没有做这样的事情的经验,所以我不知道数据库必须有多大才能有意义地切换。或者,您可以拥有任意数量的cron作业,所以我不明白您为什么不能在有人注册时设置特定于用户的cron作业。

票数 1
EN

Stack Overflow用户

发布于 2021-01-09 22:17:10

您可以设置一个CloudWatch事件来按常规计划触发Lambda函数。Lambda函数可以在数据库中搜索适用的结果集,并执行其他操作-发送电子邮件、文本消息等。

这是一个AWS教程,它涵盖了一个非常相似的用例,并提供了逐步说明。本教程是使用AWS Java API实现的(但您也可以使用其他受支持的编程语言实现它)。

https://github.com/awsdocs/aws-doc-sdk-examples/tree/master/javav2/usecases/creating_scheduled_events

从成本的角度来看- Lambda允许每月100万次免费请求。详情在此- https://aws.amazon.com/lambda/pricing/

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65640091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档