1
5
长轮询服务器的实现细节因平台而异,因此您的假设可能不正确。 我为实现了一个Comet服务器 our website 使用.NET。我杠杆 HttpListener 做所有无聊的HTTP工作 Microsoft CCR 处理所有的异步IO。它使用一个线程池在请求进入时为请求提供服务。它不是每个客户机的线程,但它不是单线程的,或者通常需要几十个线程来保持流体,因为用户数量增加。这种方法意味着我们可以轻松地跨多个CPU核心进行扩展。CCRS异步枚举器模式确实帮助保持了异步逻辑的整洁,一年后我可以很容易地读取代码。 事实证明,这种方法具有极强的可扩展性。我已经测试了20000个客户机,因此我们被网络IO绑定。它处理我们所有的客户机(它们“永久”连接,每30秒重新连接一次),以1-2%的服务器负载运行。绝对值得重新考虑您的假设,即必须选择事件循环体系结构而不是多线程。中间地带对我来说很好,而且 .NET asynchronous programming model 对于处理IO绑定的任务,您实际上不需要对线程进行微管理。实际上,当存在要处理的IO数据时,会从池中借用一个线程来进行该处理,然后返回到池中,准备为另一个请求提供服务。 All the complicated IOCP stuff 是抽象的。 |
Julian Koster · $\u发布内容的持续时间(生存期) 6 年前 |
chris hyun ho kim · 用于“拆分”记录的HTTP谓词 6 年前 |
Ian.V · Golang CSRF在结构中保存模板字段 6 年前 |