【发布时间】:2019-03-05 09:17:21
【问题描述】:
任务是向客户端发送有关某些事件的通知。假设事件速率约为每秒 1 次,我们有大约 10000 个客户端正在监听该事件。 你会建议什么架构?服务器推送可以维护多少个打开的连接?
【问题讨论】:
标签: architecture distributed-system server-push low-latency
任务是向客户端发送有关某些事件的通知。假设事件速率约为每秒 1 次,我们有大约 10000 个客户端正在监听该事件。 你会建议什么架构?服务器推送可以维护多少个打开的连接?
【问题讨论】:
标签: architecture distributed-system server-push low-latency
如果您使用基于良好可扩展多线程架构的 websocket 服务器,真正的限制不是打开的连接数,而是总吞吐量。在您的情况下,整个过程的总数是每秒 10,000 条消息。我们还应该考虑平均消息大小。例如,如果一条典型的消息是 10 字节,那么您的总吞吐量是 0.8 Mbit/s;如果一条典型的消息是 1000 字节,那么您的总吞吐量是 80 Mbit/s。
在这两种情况下,根据我们的经验,中型服务器可以安全地处理此类流量。
仅供参考,我们在 websocket 服务器上成功测试了 100 万个并发连接,每个连接的吞吐量为每 10 秒 1 条消息。这意味着每秒有 100,000 条消息分布在单个服务器上的 1,000,000 个套接字上。 [全面披露:我是 Lightstreamer 的联合创始人]
【讨论】: