【问题标题】:How to send millions of apple push notification like Urban Airship within several seconds如何在几秒钟内像 Urban Airship 一样发送数百万条苹果推送通知
【发布时间】:2012-08-29 05:33:59
【问题描述】:

我需要在几秒钟内像 Urban Airship 一样发送数百万个苹果推送通知

我用了以下

我有几台专用服务器,几秒钟内可以发送数千条推送通知,但如何像 Urban Airship 一样在几秒钟内发送几百万条苹果推送通知?

【问题讨论】:

  • 拥有多台服务器...
  • @LawrenceCherone 是的。我有多个文件服务器、多个数据库服务器和多个 memcached 服务器。
  • 所需的服务器数 = 1,000,000 / 每台服务器每秒的最大通知数。
  • 我添加了时间范围。通过建议您检查瓶颈在哪里(网卡,建议添加更多网络接口,防火墙处理,CPU,内存等),我可以更准确。但是,当您遇到限制时,添加更多服务器是最简单的选择。
  • @MahbuburRAaman 你能做到这一点吗?寻找相同的。谢谢+1

标签: php iphone ios push-notification


【解决方案1】:

每台服务器执行特定任务的能力有限。您不能假设具有某些 xyz 配置的专用服务器将为您的应用程序实现每个 NFR。您必须进行服务器容量规划才能实现应用程序 NFR。如果您的专用服务器能够在 1 秒内发送 10K 的推送通知并优化服务器和应用程序的配置,而您希望在 1 秒内实现 20K 的通知,则您必须对服务器进行水平/垂直缩放。

在水平扩展中,您放置另一个并行实例并在它们之间划分任务,但在垂直扩展中,您可以扩展同一台服务器以获得更高的配置。不推荐垂直缩放,因为它有单点故障。

为了扩展您的问题,您必须并行放置另一个实例,以在它们之间划分推送通知发送任务。例如,如果您想在一秒钟内为 20K 设备发送 20K 推送通知,您可以将前 10K 分配给第一台服务器,将接下来的 10K 分配给另一台服务器。这将实现您在一秒钟内发送 20K 推送通知的 NFR。

【讨论】:

    【解决方案2】:

    我的 2 美分值。

    最大 Apple 推送负载 = 255 字节

    100 万台 iOS 设备 = 1,000,000

    将其打包成一个文件 = 255,000,000 字节 = 255MB。

    打开 TCP 连接 + 将所有内容转发到 APNS 网关。这是我能想到的最快的方法。在将您的有效负载分派到目标 APNS 服务器网格之前,将它们预处理并预打包到本地的单个或多个文件中。

    【讨论】:

      【解决方案3】:

      这取决于您的带宽和服务器的处理速度。单个服务器无法每秒发送 142857 个数据包(包括有效负载),这就是您看到限制的原因。

      您需要多个专用服务器和一个控制服务器,该控制服务器将通过内部 API 将单个作业发送到 APN 服务器,这样可以分发作业。

      【讨论】:

      • 你能分享任何(更好的)参考吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多