【发布时间】:2017-06-05 16:27:25
【问题描述】:
问题:
因此,我们正在为我们的应用构建一个通讯系统,该系统必须能够每天发送 20k-40k 封电子邮件。
首选工具:
- Amazon SES - 用于定价和可扩展性
- Azure Functions - 用于无服务器计算以发送电子邮件
亚马逊 SES 的限制:
- Amazon SES 限制具有最大发送速率 - Amazon SES 通过施加最大发送速率来限制通过其服务进行的发送。目前,在沙盒 SES 环境之外,我们的容量为 14 封电子邮件/秒,每日电子邮件上限为 50K。但可以通过支持票提高此限制。
Azure 函数的限制:
在消耗计划中,无法限制 Azure Function 实例执行的数量。目前,缩放由 Azure 内部处理,因此该函数可以在几个到数百个实例之间执行。
通过阅读有关 Azure Functions 的其他帖子,Azure Functions 似乎存在“预热”期,这意味着一旦通过记录的触发器之一触发该函数,该函数可能不会立即执行。
Azure Functions 与 SES 的限制:
明显的问题是 Amazon SES 限制从 Azure 函数发送电子邮件,因为发送电子邮件的 Azure 函数的扩展执行将远高于 SES 允许的发送速率。
由于 Azure Function 消息的“预热”期,最终可能会在 Azure Function 真正开始大规模处理它们并发送电子邮件之前堆积在队列中,因此很有可能发生达到发送/速率限制。
问题:
- 我们如何利用通过 Azure Functions 发送电子邮件,同时仍处于 SES 的 X 电子邮件/秒限制之下?有没有办法限制 Azure 函数在每个时间范围内可以执行的次数?就像假设我们不希望每秒运行超过 30 个 Azure Function 实例?
其他想法:
如果客户的实施不断达到限制限制,Amazon SES 可能不喜欢为客户连续限制 SES。亚马逊 SES 的人,你能评论一下吗?
Azure Functions - 根据文档,Azure Functions 在消耗计划上的缩放是在内部处理的。但是没有办法在缩放上设置手动“上限”吗?从客户的角度来看,这似乎是一个普遍的要求。 问题不在于 Azure Functions 无法处理负载,问题在于与 Azure Functions 接口的系统的其他组件无法处理 Azure Functions 可以处理的大规模负载。
感谢您的帮助。
【问题讨论】:
-
它真的将是一个自定义系统,并与我们的 CMS 紧密集成。所以我们不想依赖外部组件。 “数十亿封电子邮件”听起来很吸引人……亚马逊 SES 又会扼杀你。我们也是 .NET / Azure 商店,希望仅通过 .NET API 与其他云提供商合作。不过感谢您的建议。
标签: azure azure-functions amazon-ses