看板Programming
标 题Re: [问题] Server的架构
发信站HiNetNews (Sun Sep 9 21:56:41 2007)
转信站ptt!ctu-reader!ctu-gate!news.nctu!newsfeed.berkeley.edu!ucberkeley!new
LINUX ?
可以考虑使用 epoll 或是libevent ,
http://rd-program.blogspot.com/2007/04/concurrency-programming.html 有提到一些相关
的文章或是参考这篇很有名的文件
http://www.kegel.com/c10k.html ,里面有提到一些
比较...
win32 就不用质疑罗! 一定是iocp , 网路上有很多相关的范例
thread & fork 各有他的优缺点,但若要提到高负载与效率,lwp 才是趋势,可以参考erlang
这类的语言,或是 一些event base programming,这应该是现在的趋势,如果不想研究太多
东西,建议你可以参考apache mina
http://mina.apache.org/ 或是c++ 里ace 这类的东西
"Victor" <
[email protected]> 撰写於邮件新闻:
[email protected]...
> 我最近正在考虑写一个Server
>
> 目前有考虑三种架构
>
> 1.轮询式的架构
> 也就是单一回圈
> 不停的更新所有连线的状态并做出回应
>
> 2.MultiThread
> 每个连线都由一个Thread负责
>
> 3.混合式
> 混合轮询和MultiThread式,每个Thread负责一定数量的连线
>
> 目前我只有写过轮询式的,其它两种都没写过
>
> 考虑到效能,轮询式的在连线数很多时,很明显的一个问题就是
> 当连线数到一定数量时,可能会变得很没效率
> 每个连线如果花1ms,1000个连线就是1秒
>
> 但是如果以MultiThread来执行,可以充份利用CPU的资源
> 可是这又带来另一个问题,由於我对Thread的成本不太了解,用起来还是会怕怕的
>
> * 其中一个问题就是,我不了解开一个Thread到底需要多少成本?
>
> 接着,我想到如果1000个连线就要开1000个Thread
> 而Thread的成本如果让人难以接受的话,那可能就得考虑第三种
> 混合式的,每个Thread负责一定数量的连线
> 但是又带来另一个问题就是设计上会变得有点复杂
>
> ----------------------------------------------------------------
>
> 除此之外还有另一个我不了解的地方,就是
>
> * 多核心的CPU到底对效能上的改进有多少帮助?
>
> 最近多核心的CPU在市面上似乎成为主流,但是我一直很好奇
>
> * 就运作上,到底能将工作分配给不同核心做到什麽地步?
>
> 以上,是我的问题
>
> --
> VICTOR工作室 | PTT游戏设计版隆重开幕!
>
> | 不管是新手老手,程式美工音乐企划....
> URL : http://www.kinmen.info/vic/ | 都欢迎来游戏设计版参与讨论
> XD
> | 战略高手>
> C/C++ | GameTopics>
> Visual Basic 6.0 | GameDesign
>
> --
>
※ 发信站: 批踢踢实业坊(ptt.cc)
> ◆ From: 59.116.64.77
> 推 Tiberius:man select
> 59.126.63.79 09/04 21:13
> → Tiberius:然後你是不是又要贴了文就不理啦 :p
> 59.126.63.79 09/04 21:13
>