如何使用 Amazon Simple Notification Service (SNS) 批量发送数百万个推送通知

Posted

技术标签:

【中文标题】如何使用 Amazon Simple Notification Service (SNS) 批量发送数百万个推送通知【英文标题】:How to send batches of million push notifications using Amazon Simple Notification Service (SNS) 【发布时间】:2014-08-11 08:59:16 【问题描述】:

像许多公司一样,我工作的公司不习惯使用 Apple 的 APNS:没有官方库、流被随机截断等...... android 的推送系统也是如此:仅限于小批量,与 Apple 的 APNS 完全不同...这就是我们寻找替代方案的原因,当亚马逊声称能够几乎免费发送数百万条推送通知时,我们认为 SNS 将是完美的解决方案。

问题在于,我们经常需要处理超过一百万台设备,显然我们的推送活动很少针对相同的设备。 据我们挖掘,唯一的解决方案是使用 AWS API,它只提供一种方法来一次创建一个端点!这对我们来说意义重大,因为经过一些测试,我们发现为了创建 1 000 000 个端点,大约需要 15 小时(约 17 次调用/秒)。

即使在创建了所有端点之后,为了一次发送所有推送,还需要将端点添加到主题中,并且必须一次完成一个端点(因此需要 15 个小时以上) . 如果我们将调用多线程化,比如说 30 个线程,则仍然需要一个小时!

那么,谁能告诉我们是否有什么遗漏的地方?亚马逊真的希望我们在 30 小时内淹没他们的网络服务以创建一个推送活动吗?如果准备好几个小时,他们怎么能假装在一秒钟内发送一百万次推送?他们是否正在为 SNS 开发批处理 API?是否可以插入包含令牌的 Amazon DB 来提供 SNS 主题?

【问题讨论】:

请问,您是同步完成所有这些工作的吗?在创建下一个 EndpointArn 之前等待创建?我会和你做类似的事情,但计划所有调用都是异步的。我只是想根据你的经历来预测我可能会经历的事情。谢谢。 这里有同样的问题。亚马逊已将我的帐户添加到功能请求中,但我们知道这意义不大。与其费心为我们的用户订阅主题,我们只需将消息直接发送到发布 API,因为它相当于同一件事。仍然需要很长时间,我们需要能够每分钟下降 10,000 个。疯狂亚马逊不支持批量请求 您可以从 EC2 实例执行特定的请求限制。但是亚马逊没有告诉你它有多少……所以你应该启动大约 15 个 t2.micro 实例,这样每个 EC2 都会有自己的请求限制。使用这种方法,您的流程结束速度会快 15 倍 令人难以置信的是,AWS 不支持这 - 推送 SNS 是事后的想法,在现实生活场景中不可用 【参考方案1】:

看起来亚马逊提供了一些添加端点/令牌的方法,包括 CSV 导入器(但一次限制为 2MB 的 csv 文件)。他们还提供了用于批量上传令牌的 API 和示例 Java 应用程序 (link)。

主题订阅点由 Amazon SNS 员工 here 处理,本质上解释说遗憾的是没有可用的批处理 API。

在频繁创建自定义细分/主题时,还有一些其他 3rd 方推送通知提供商可能更好地满足您的需求:

    OneSignal(披露:我经营这家公司) MixPanel Parse

【讨论】:

今天,Mixpanel 不支持亚马逊消息系统 (ADM)。不确定 Parse 是否支持 ADM。 嗨 Gdeglin,我也有类似的问题,我们正在考虑使用 onesignal。我们希望向每个用户发送个性化通知。如何使用 onesignal 向超过一百万的用户群发送个性化通知? @pankaj 你好!请为此问题打开一个新的 *** 线程,或通过 support@onesignal.com 联系 OneSignal 团队以获取指导。 @Gdeglin 作为一个新问题发布:***.com/questions/40083914/… 我不担心“免费”部分,我担心的是“我们通过使用我们汇总的数据来改善网络和移动体验来赚钱。我们还为企业提供定制解决方案客户。” 我想知道“改善网络和移动体验”是什么,以及您实际如何处理这些数据。

以上是关于如何使用 Amazon Simple Notification Service (SNS) 批量发送数百万个推送通知的主要内容,如果未能解决你的问题,请参考以下文章

错误 CS0030:无法在 Amazon Web Service 中将类型“Simple.Amazon.ECS.ImageSet[]”转换为“Simple.Amazon.ECS.ImageSet”

Python 包装器“python-amazon-simple-product-api”用于在亚马逊上创建新购物车

Amazon Simple Storage Service(S3)

Amazon Simple Notification Service 是 RESTFUL Web 服务吗?

Amazon Simple Email Service 的邮箱模拟器

异步消息队列和处理,如 django 中的 Amazon Simple Queue 服务