立即/按需发送电子邮件通知,而不是通过调度程序/Cron发送


Sending Email Notifications Immediately/On-Demand Versus Sending them Via Scheduler/Cron

在您看来(希望是基于事实而不是情感形成的),从网站发送电子邮件通知的更好方法是什么?

例如,假设您网站上的用户 A 请求与用户 B 建立友谊,此时您将生成一封电子邮件以发送给用户 B。

问题是 - 什么时候是发送电子邮件的最佳时间?立即,作为同一执行路径的一部分,还是将电子邮件安排为批处理的一部分?

就像我说的,我的问题相当笼统,所以你可以假设不同的架构——一个服务器专用于托管,另一个专用于电子邮件,单个服务器,云托管等......我对所有答案都很好奇,真的。

在我看来:

使用即时电子邮件,您可以及时收到电子邮件,

但如果您的网站收到大量流量,您可能会通过发送太多电子邮件来使服务器陷入困境。话虽如此,因为您没有发送一批电子邮件,所以它们都是一次性的。

如果您批处理电子邮件并让计划任务或 cron 作业拾取并发送它们,您的电子邮件不会那么即时 - 因此假设您减少间隔,以便每 1 分钟发送一次批处理。在我看来,问题是并发 - 如果另一个批次在第一个批次完成之前启动,如果您没有适当地标记或锁定要发送的内容,您可能会冒着发送双重电子邮件的风险。

根据我的个人经验,当我在一个高流量的网站上立即发送电子邮件时,性能并没有受到太大影响,尽管许多电子邮件未能发送出去。

思潮?

我会说一定要安排它们。在用户请求和服务器操作方面必须有代价,就好像有人能够让其他人成为朋友一样,它也(我希望)能够拒绝与同一个人的友谊。如果是这样,如果我快速接受和拒绝您网站上的点击怎么办。 ?

在这种情况下,您有 2 个选项,imo:

  • 像 SO 一样,在用户点击时添加一些时间(您无法在 2 秒内接受和拒绝)

  • 或者你可以,但此时发送给接受/请求友谊的人的最终消息被安排在服务器上,并将在 30 分钟后发送(或更短时间,架构师选择的问题)

希望这有帮助。