我需要:编写一个代理服务器来为我的客户端下载音乐。假设每个客户端想要下载 20-200 首作品(400MB-4GB 的音乐),我必须同时支持许多用户。
问题:关于如何编写该服务器,我听到了截然不同的推理:在主事件循环中或为每个用户打开新的工作线程。
我的流程:
- 用户请求服务器下载数据
- 服务器下载数据并将其立即流式传输到客户端
问题: 一个线程或多个工作线程可以满足我的需求?为什么?
最佳答案
假设有几个工作线程,因为它经常需要打开 tcp 连接(阻塞主线程),并且您的回调将等待主线程队列。 你的 HTTP 服务器有很多工作人员吗?在我看来,好的决定是让多个工作进程绑定(bind)到您的 HTTP 端口,并且每个工作进程都是一个代理。 如果您的应用已经集群化,那么也许使用 MQ + 代理集群是合理的。
关于javascript - Node.js HTTP 代理架构 : downloading big amount of data for client,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27227462/