在.Net中设计"可扩展的多线程套接字推送服务器"

Sof*_*tic 2 .net c# sockets network-programming serversocket

我们正在开始在.Net 中设计可扩展的多线程套接字推送服务器,它最初将为每个节点处理10K个客户端.由于设计这可能非常复杂,如果所有专家都可以提供任何指导,资源,最佳实践等,那将对我有所帮助.

由于我对套接字编程知之甚少,如果有人可以建议我开源的开源项目真的很好......我用Google搜索,但找不到任何好的解决方案.

这对于想要设计此类服务器的其他人也很有帮助.

[为了您的信息,我们计划为此服务器使用.Net 4.0]

我一直在阅读有关Async Socket及其Pinning相关问题的大量信息.这个问题在.Net 4.0中是否仍然存在?

提前致谢...

Len*_*ate 5

在合理的硬件上使用.Net的10k并发连接不应该是一个问题,但是,一如既往,它将取决于您在服务器中实际执行的操作以及每个连接彼此之间的隔离程度.毕竟,当你没有为每个节点定义硬件要求时,说"每个节点处理10k个客户端"是没有意义的,每个连接上流入和流出的数据量以及每个连接可能有多少CPU.需要做好自己的工作.我在这里谈论这些模糊的,手动的可扩展性问题:http://www.serverframework.com/asynchronousevents/2010/12/one-million-tcp-connections.html

然而:

首先,您应该查看异步套接字API,并且几乎忽略了线程问题..Net的异步套接字将为您处理线程并使用I/O完成端口(一个非常可扩展的内核对象)来管理您的线程.

另外,请记住,如果您使用异步发送,那么如果TCP流量控制启动,这些可能需要很长时间才能完成,请参阅此处.

和...

其次,你应该从第0天开始测试你的可扩展性,并在开发过程中一直测试它 - 我在这里写下原因:http://www.serverframework.com/asynchronousevents/2010/10/how-to-support-10000-或者更多并发TCP的连接部分----2 ---穿孔-测试-从天0.html