我需要构建一个服务器来接受一个非常高频率和负载的客户端连接(每个用户将每0.5秒发送一个请求,并且应该在800 of以下得到响应,我应该能够在一台服务器上支持数千个用户)。假设SQL Server是经过精心调整的,不会造成问题。(假设当然可能不是真的)
我想写一个非阻塞的服务器来完成这个任务。我的后端是一个SQL Server,它位于另一台计算机上。它不需要实时更新,所以我想我可以将大部分数据缓存在内存中,并每10-20秒将其转储到DB中。
我是否应该使用C#编写服务器(这与server更兼容)?也许是“旋风”里的Python?在编写高性能服务器时,我应该考虑什么?
编辑:(添加更多信息)
任何想法都会很感激:)
谢谢
发布于 2011-04-21 13:14:20
好吧,如果你真的需要高性能,不要选择C#,但是C/C++,这是显而易见的。
无论如何,进行服务器编程的最快方法(据我所知)是使用IOCP (I/O完成端口)。嗯,这就是我制作MMORPG服务器模拟器时所用的,它比基于C++选择的官方服务器执行得更快。
下面是对C# http://www.codeproject.com/KB/IP/socketasynceventargs.aspx中IOCP的一个非常完整的介绍
祝你好运!
发布于 2011-04-21 13:07:55
使用您最熟悉的编程语言。在您不完全理解的大型应用程序中查找性能问题要昂贵得多。
买更多的硬件要便宜得多。
发布于 2011-04-21 13:15:41
人们会说C++,因为.Net中的垃圾收集可能会减少延迟。但是,如果您很聪明,可以通过重用现有的托管对象来避免垃圾收集。
编辑:您对Server的假设可能是错误的。您需要将状态存储在内存中,以便进行随机访问。如果需要持久化更改,请将其记录到文件系统,并将它们与数据库合并。
编辑2:您将有很多不同的线程在处理相同的数据。为了避免阻塞和死锁,学习无锁编程(Interlocked.CompareExchange等)。
https://stackoverflow.com/questions/5744507
复制相似问题