NodeJ计划流程的最佳实践?

时间:2020-09-28 06:05:27

标签: javascript mysql node.js amazon-web-services express

我目前正在开发类似Tiktok的大型应用,其中的视频将存在5天。我的问题是我应该如何计划在5天后删除视频? 2我提出的方法是我可以建立一个后台服务工作者,该工作者将不断循环遍历数据库并检查视频是否应该关闭,或者可以将其放入setTimeOut()中5天,这意味着它将在RAM上,并且需要一个服务来在服务器关闭的情况下重新启动所有setTimeOut()。我正在使用AWS EC2,所以我想知道哪种方法可以扩展并节省一些钱。谢谢。

1 个答案:

答案 0 :(得分:1)

您可以使用队列管理在其上存储任务。

假设您有一个队列,其中包含任务。您有一个监听队列的使用者。如果有消息发送,则消费者将阅读消息并为您处理作业。

但是有挑战。 何时,您应该将任务发送到队列中,何时,消费者应该处理任务。对于可用性部分,消息代理是不错的选择,但是管理流程取决于您的方法,如果您具有微服务系统设计,则可以将使用者作为服务编写。

rabbit-MQkafka是最受欢迎的消息代理。

当然,您应该了解任务队列消息队列概念。

看一下区别:

https://serverfault.com/questions/669434/whats-the-difference-between-a-task-queue-and-a-message-queue-in-rabbitmq

https://www.tech101.in/message-queue-and-task-queue/

有一个与Redis一起使用的简单任务队列包:

bee-queue

请注意,处理消息代理在 生产级别。

您还应该了解cron系统:

https://en.wikipedia.org/wiki/Cron

https://www.redhat.com/sysadmin/automate-linux-tasks-cron