ios - 是否可以使用 websockets 在 iPhone 和服务器之间实现 50,000 个活动连接?
问题描述
建筑学
假设您可以下载一个 iPhone 应用程序,它可以做一些有用的事情,但其中一个要求是成为作为节点的集体计算过程的一部分。
每个 iPhone 应用程序都连接到服务器,并且只有在用户积极使用应用程序时才会定期(每分钟一个)接收查询(<100 字节)。(没有后台任务)
每个 iPhone 应用程序都会处理查询(对性能和电池寿命的影响非常小)并且很少发送响应(<1KB)(仅当该过程产生了重要的东西时)。
数据类型
- 小尺寸纯文本
功能性
- 当 iPhone 应用程序请求解决查询而不是让服务器负责处理它时,服务器会将查询发送到当前在线的所有 iPhone。每部具有解决方案的 iPhone 都将其发送到服务器,然后服务器将其发送回提出问题的 iPhone。服务器成为信使,可以将其资源用于解决与程序相关的各种问题,而这些问题在每个 iPhone 个体上都无法解决。例如,查询和答案的自动完成功能,因为服务器将知道所有曾经询问过的查询,但单个 iPhone 应用程序却不能,因为它大部分时间都处于离线状态。
障碍
- 网络:如何使用 websocket 将所有 50,000 部 iPhone 连接到服务器?如何将查询发送到服务器,从服务器分别发送到所有 50,000 部 iPhone,然后再发送回提出问题的 iPhone?
我知道有很多问题需要解决,但核心功能的规模是迄今为止最大的一个。
例子
一部 ID 为“73869485”的 iPhone 会询问“对火星的好奇还在起作用吗?” --> 服务器
服务器“对火星的好奇还在起作用吗?” --> 49,999 部当前在线 iPhone
处理在每部 iPhone 中单独进行。
6 部 iPhone 发送有趣的答案“6 个答案的数组”--> 服务器
服务器“6 个答案的数组”-> ID 为“73869485”的 iPhone
解决方案
推荐阅读
- mathjax - 我们如何在 AMP 网站中实现 MathJax?
- parsing - 将算术表达式树转换为字符串而没有不必要的括号?
- python - 如何使自定义类与 Python 中的“for in”循环一起使用?
- javascript - 与带有/不带 value 属性的输入元素混淆
- flutter - new Text(counter.toString()) 显示不会随着颤动中的计数器增量而更新
- c# - 在本地主机上使用 ASP.NET Web 应用程序时如何清除 razor 文件的缓存
- amazon-web-services - 我在实例系统日志中找不到生成的 AWS Bitnami Ubuntu 服务器密码。为什么生成的密码不显示?
- ios - CGContext & CGMutablePath 画线 但它被颠倒了
- c++ - 获取类的第一个模板参数
- c - 给定 -2 到 +2 的边界,表示 n/2^k 需要多少精度?