c# - 在.Net中设计 "Scalable Multi Threaded Socket Push Server"

标签 c# .net sockets network-programming serversocket

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

由于我对套接字编程了解不多,如果有人可以建议我一个开源项目来开始使用,那就太好了...我用谷歌搜索了它,但找不到任何好的解决方案。

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

[供您引用,我们计划为此服务器使用 .Net 4.0]

我一直在阅读大量有关异步套接字及其 Pinning related problem 的信息。这个问题在 .Net 4.0 中还存在吗?

提前致谢...

最佳答案

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

但是:

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

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

还有...

其次,您应该从第 0 天开始测试您的可扩展性,并在整个开发过程中不断测试它 - 我在这里写下原因:http://www.serverframework.com/asynchronousevents/2010/10/how-to-support-10000-or-more-concurrent-tcp-connections---part-2---perf-tests-from-day-0.html

关于c# - 在.Net中设计 "Scalable Multi Threaded Socket Push Server",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4653984/

相关文章:

java - 无法在android中启动网络服务器服务

c# - 在将遗留 C++ 组件之一转换为 C# 时需要建议

asp.net - SignalR:连接建立时服务器如何正确订阅组

c# - IIS ASP.net 应用程序突然挂起请求

.net - 重用 SpecFlow 场景

python - 如何在 python 3.2 中解压缩 c 结构?

c# - ListView 中的 FindControl (ImageButton)

c# - 使用 C# 进行语音转文本

c# - 从证书库导入的 X509 证书没有私钥

c - struct sockaddr_in -/usr/include/netinet/in.h 中的 "sin_family"在哪里?