ios - WhatsApp 等应用程序如何摆脱 Apple 推送通知服务的连接限制?

标签 ios scalability apple-push-notifications

Apple APNS 仅允许来自您的服务器的最多 20 个连接,那么 WhatApp 等应用程序如何能够每秒传送如此大量的消息?

即使他们可以使用多个服务器,但假设他们有 500 万活跃用户发送消息,他们还需要 25 万台服务器,这听起来很疯狂,对吧?

这里有什么技巧?

最佳答案

非常简单:每个用户不需要一个连接。

您可以为每个 APNS 连接发送多条消息。每条消息可以发送到不同的设备。最大有效负载长度为256字节加上45字节的开销; 10Mbit 连接每秒至少可以处理 4100 条消息,或者大约 250k/分钟,或者每个用户每小时大约 3 条消息。

平均“活跃用户”每小时发送超过 3 个吗?很难说。 “活跃”可能意味着他们当月发送了一条消息;这样的分布有非常长的尾部。

无论哪种方式,这都适用于单个 10M 连接。我不确定 Apple 方面有多少争论,但如果您可以毫不费力地超过 50M,我不会感到惊讶。

此外,当应用程序位于前台时,他们几乎肯定会使用自己的服务器,如果他们聪明的话,他们可以在应用程序后台运行后保持连接几分钟(并且仅在连接后才使用推送通知)关闭)。

关于ios - WhatsApp 等应用程序如何摆脱 Apple 推送通知服务的连接限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15262813/

相关文章:

performance - 对 Azure 可扩展性目标和多个 Azure 存储帐户的使用有疑问吗?

ios - 限制 iOS 远程通知的数量

ios - 推送通知可从 FCM 控制台运行,但如果从 API 发送,则会显示 “InvalidApnsCredential” 错误(仅在 iOS 设备上)

iphone - 是否有另一个 API 可以在 iOS 上启用实时音频处理?

ios - 一定时间后如何在iOS SDK中向视频文件添加音频?

ios - 自定义单元格标签返回 nil

database-design - 商业Web应用--可扩展的数据库设计

tomcat - SaaS 可扩展性 - Tomcat 是否足够可扩展?

ios - 向特定用户发送远程推送通知

ios - 在 AppDelegate 中切换 View (Swift)