【问题标题】:Cron, Email, PerformanceCron、电子邮件、性能
【发布时间】:2009-09-21 05:54:04
【问题描述】:

我正在为我的客户构建一个系统。这很像 www.getafreelancer.com。 有两种类型的用户:服务提供者和服务购买者。 服务采购员发布项目。 服务提供商会收到任何发布的符合其分类的新项目的通知。

假设: 大约有100个资格。服务商可选择10-15个资质。 现在每天发布大约 100 个项目。并且有100万服务商。 问题是我们必须向服务提供商发送电子邮件通知,将他们选择的资格与项目类别相匹配。 (每天所有 100 个项目)。

这就像逐个用户进行。通过项目类别检查他们的资格并向他们发送电子邮件。如何每天发送 20 * 100 万 = 2000 万封电子邮件?

(目前不会有100万用户。但编程必须根据未来的需求进行)

请提供一些建议。

我的问题是:发送 100 万封电子邮件是否需要任何特殊硬件?

【问题讨论】:

  • 不是一个真正的问题,请重写以使其成为一个问题。

标签: php performance email cron


【解决方案1】:

从你提出问题的方式来看,有点难以弄清楚你想要什么。

如果您想以近乎实时的方式发送电子邮件,事情就相当简单了。一些买家有需求,一旦他们发布,你就会发出一堆通知。这将很难扩展,但痛苦将出现在电子邮件传递方面。假设您的数据库设计和基础设施不那么糟糕,那么简单地生成要通知的提供者列表是相当简单的。

如果这就是您正在做的事情,您只是想确保以一种智能的方式设置您的电子邮件传递平台。设计您的基础架构,以便您的核心系统可以轻松地将批量电子邮件委托给 N 个从属服务器,这些服务器可以处理一些邮件合并并为您提供足够的 SMPT 吞吐量。

如果您想定期发送电子邮件,以便提供商只收到一封包含多个职位的电子邮件,您需要考虑一些不同的事情。

在这种情况下,请考虑基于对提供程序列表进行分段以及数据库复制来处理读取负载的架构。

在此模型中,买家发布工作。您的主数据库得到更新,并且一些从属通过复制获取数据。每个奴隶负责通过电子邮件使提供者保持最新状态。每 N 小时,每个从属服务器从其专用的只读数据库中读取数据并处理其用户段。

当您将新的通知系统上线时,您需要制定重新细分提供商的详细信息。例如,当您添加第三个通知系统时,它最终应该为现有的两个系统提供大约 1/3 的负载。

【讨论】:

  • 我没有足够的从服务器知识。但你的回答似乎合乎逻辑。谢谢。
  • 我的荣幸。邮件传递可能是一个非常令人头疼的问题。老实说,由于您的客户可能永远不会拥有一百万个提供商,因此您应该尽最大努力提前计划,而不必过多担心细节。您想象这些电子邮件通过 cron 而不是在创建职位发布期间发出的事实意味着您走在正确的轨道上。从那里,继续抽象您认为可能需要多路复用才能扩展的东西。
【解决方案2】:

这是 很多 封电子邮件。首先,您不太可能发送这么多电子邮件,因此我不会为您的系统构建这样的数量。您应该考虑配置您的服务,以便需要更少的电子邮件(每日摘要、更有选择性的目标、RSS 提要)。但是,即使您每天发送 500,000 封电子邮件,您也将需要重型基础设施或向 VerticalResponse 之类的 ESP 支付 很多 钱。免费邮件传输代理 (MTA) 包括 Postfix 和 SendMail。商业选项包括 Strongmail 和 PowerMTA。有了这么多电子邮件,您可能需要注意垃圾邮件投诉(取决于您的项目审查过程)。 ReturnPath 对此很有用。

【讨论】:

  • 这很有帮助。我计划将某些内容移至 RSS。谢谢。
猜你喜欢
  • 2010-10-29
  • 1970-01-01
  • 2011-04-26
  • 2011-07-30
  • 2018-11-15
  • 2012-12-04
  • 1970-01-01
  • 2018-06-18
  • 2017-06-06
相关资源
最近更新 更多