【发布时间】:2020-09-18 12:20:09
【问题描述】:
我目前正在尝试设计一个可扩展的推送通知服务,它可以在很短的时间内向 5-10 百万用户发送通知。我遇到了两个与 AWS 相关的架构,这让我很困惑。 用例:向所有用户发送通知。
1) 每个设备订阅一个 SNS 主题,如果我们想向所有用户发送推送,我们只需发布到主题端点。其余的由 SNS 处理(发送给百万用户)
2) Lambda 函数订阅了 SNS 主题。我们向包含所有设备令牌/批次的 SNS 主题发送一条消息,然后 lambda 调用 APN/Firebase 端点。
我看不出在什么情况下第二种架构比第一种更有利?
【问题讨论】:
-
能否进一步解释第二个选项?你是说只有一个 AWS Lambda 函数会订阅该主题,并传递 5-1000 万个要联系的身份列表?
-
@JohnRotenstein 感谢您的回复。关于第二个选项,它可能是。一种选择是进行批处理并将它们发送到 lambda 函数,然后直接发送到 apn/firebase。 (blog.toppr.com/…)
-
另一个是包装最大 SNS 有效负载的通知,发送到 SNS,一个下标 lambda 函数读取它,然后再次生成多个 lambda 函数并发送通知。 (幻灯片 9:slideshare.net/AWSAktuell/…)但无论哪种情况,我都不明白为什么我们不能让所有百万设备直接订阅 sns 主题,而不是涉及 lambda 函数
-
我同意。如果它适用于您的 SNS,则无需使用 AWS Lambda 函数。顺便说一句,您可能也有兴趣了解AWS Pinpoint。
-
我去看看,谢谢!另外,如果我们要向 5-1000 万用户批量发送一条通知,根据您的经验,您认为如果我们使用多个 lambda 函数与仅使用 sns 相比,是否会对整体交付时间产生任何影响?
标签: amazon-web-services push-notification aws-lambda apple-push-notifications amazon-sns