8

我有一个应用程序逻辑,要求我将用户设备划分为订阅不同类型的“频道/主题”的组。

然后,我想向特定主题或频道的所有订阅者发送广播消息。

我可以拥有多达 500,000 个主题或频道,以及每个频道多达 20,000 个订阅者。

由于 AWS SNS 每个频道限制为 3,000 个主题和 10,000 个订阅者,因此他们的常见问题解答建议您使用直接寻址,这意味着我自己一个接一个地发送。他们建议我们也走这条路,如果我们有大量的..

AWS SNS 没有批量发布功能,所以我实际上需要为每个订阅者发出一个 SNS 发布请求,这可以达到数万个请求。

所以我发现 AWS-PHP-SDK 是建立在 Guzzle 之上的,并且支持通过 multi curl 进行并行请求处理,但即便如此,如果我同时运行 20 个连接,我仍然需要发出这么多请求......甚至有效率?如果我有大容量,为什么推荐这样做?

又想到另一个问题,如果我需要自己一个一个地向每个订阅者发送相同的消息,为什么要使用 SNS?

Apple APNS 服务通过打开 TCP 连接并写入请求字节来工作,每个请求都有不同的订阅者详细信息,但我可以只写入字节而无需构建 PHP 请求和处理 20 个进程的开销。将我的消息发送给所有主题/频道订阅者不是更快吗?

在这些类型的情况下,我对 AWS SNS 服务的权衡和附加值感到有些困惑。我希望能从有这方面经验的人或 AWS 员工那里获得一些见解。

谢谢你

4

1 回答 1

2

如果您只是要对 APNS 目标进行 1-1 通知,那么使用 SNS 并没有太大的优势。

如果您想开始针对 iOS、Android 和其他通知平台的 1-1 通知,SNS 变得更加有用,因为它可以帮助您在代码中的单个 SNS API 后面抽象所有这些不同的平台目标。

如果您想广播 1-N,那么 SNS 也很有用,因为您可以进行一次呼叫以传送到 10,000 台设备。

于 2014-07-25T19:48:21.670 回答