锁定老帖子 主题:高性能动态Web服务器的一些探讨
精华帖 (0) :: 良好帖 (1) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2010-03-12
最后修改:2010-03-12
如何入手
|
|
返回顶楼 | |
发表时间:2010-03-12
thinkry 写道 mercyblitz 写道 thinkry 写道 不是。fastcgi本质上是多进程同步模型,我的想法是为异步模型增加HTTP支持。按照这样混合使用能平衡性能和开发效率:
·异步模型:性能高,开发复杂度高。适用于访问量大的,业务简单的访问。例如判断是否登录 ·同步模型(fastcgi):性能较低,开发复杂度低。适用于逻辑复杂的场景。 你说是AsycWeb吗? 你要用C实现,还是Java呢? C++实现。在mmog游戏后台的一些Server中,一般能做到1万/秒的并发。当然有些逻辑比较重的主逻辑Server就另当别论了。 感觉现在做游戏后台的人挺多的,开发异步Server也变得平常了,一旦打通异步Server和HTTP之前的障碍,Web服务就能有更高性能了。 我个人不太赞成使用低级别的语言,因此C++不是特别好,利用高并发的编程语言来是实现,加快实现的速度。 |
|
返回顶楼 | |
发表时间:2010-03-12
ilove2009 写道 各位大牛,我想研究高性能web怎么搞,麻烦指点如果入手,谢谢。
协议入手。 |
|
返回顶楼 | |
发表时间:2010-03-12
最后修改:2010-03-12
thinkry 写道 haibo 写道 怎么看,感觉你说的这个东东好像有人已经做过了似的,,如果异步Server能每秒1万的性能的话,前端我宁可使用jsp/servlet 服务器,动态多线程,现在服务器的硬件配置都趋向于多核多线程,,应该好好利用才是啊
我对jsp/servlet的性能不了解,呵呵。 我使用的服务器一般是4核,业务一般是单线程单进程异步模式,充分利用CPU,一般划分接入进程、逻辑进程、辅助进程等。网络IO的软中断本身也会耗CPU。如果更多核怎么办?这是后面需要研究的。一个简单的解决方法是把多套服务部署到一台机器上。 至于多线程/多进程,一般是同步模式,逻辑简单,能快速开发,但容易被后端接口阻塞住。我一般用在同步转异步的地方或对性能要求不高的地方。 Servlet3.0的目标之一就是异步Web,不过性能是取决于JDK实现,利用操作系统和硬件平台的特性等等。 |
|
返回顶楼 | |
发表时间:2010-03-12
有一点需要考虑,而且是第一时间考虑,那就是带宽。这一条件被满足的前提下其他论证才有讨论的必要。
|
|
返回顶楼 | |
发表时间:2010-03-13
最后修改:2010-03-13
ilove2009 写道 各位大牛,我想研究高性能web怎么搞,麻烦指点如果入手,谢谢。
你接触不了这类系统的话就都是纸上谈兵,没戏。根本没必要浪费时间去研究这东西,你搞不来的。 等你接触到了就会知道,不同系统有着不同业务,所用技术软件硬件网络数据库都不一样,解决方案也不会是千篇一律,而是和系统本身高度相关的。 |
|
返回顶楼 | |
发表时间:2010-03-14
不是很了解,请详细说明。。
|
|
返回顶楼 | |
发表时间:2010-03-15
mryufeng 写道 随便用GO或者Erlang做个web服务器都是C10K以上的并发,不用这么麻烦的,选择好个工具最重要。。。
在我了解的tx的许多服务器都是C/C++开发的,例如dbsvr(架设在mysql前缓读/缓写的svr)、中转svr、游戏逻辑svr,所以选择C++也是比较平滑的方案,毕竟这是个通用组件,不用像产品那样经常迭代。用GO(是google的那个么?)和Erlang总是有些技术风险的,比较适合有相关经验的人和一个小case做试点积累经验。 |
|
返回顶楼 | |
发表时间:2010-03-15
smilebug 写道 “IO一般不是瓶颈”这个结论不能苟同,这部分应该是最大的瓶颈
要写一个好的服务器要考虑的东西不少,比如: 如何处理分布式 如何易于扩展 如何利用好多核的CPU资源 如何减少在用户态和内核态之间的切换次数 在不同系统上,甚至不同内核版本之间功能实现的机制差异,以及支持的策略差异,如何调整服务器的动作方式 …… 写一个服务器容易,写好一个服务器难啊。当然还是希望LZ能早日写出个好的服务器 对静态websvr来说,磁盘IO一般不是瓶颈,网络IO才是。smilebug觉得呢?我看过一个静态websvr,把文件都cache到内存(有的还要gzip压缩),开个8G内存能满足网站的大部分需求。 你考虑的几点要素,我的意见供参考: 1、如何处理分布式:在设计系统时,会根据业务的不同考虑水平扩展和垂直扩展的能力。例如静态websvr,在各IDC相应部署就行;动态websvr可以通过反向代理,转到主IDC处理;像MMOG,一个区就是一个独立世界,相关机器放一个IDC,不考虑水平扩展等等。 2、如果易于扩展:同1也是在设计整体系统时考虑。 3、如何利用好多核的CPU资源:部署多套是种选择,公司很乐意看到一台机器当多台机器。有些语言和框架的多进程/多线程天然能利用多核,但不是本文讨论的范围。 4、至于内核版本差异问题,我研究不多。个人感觉对网络服务程序,只要支持epoll,差别不大。不知有没有更多信息可参考? 异步svr写起来没同步那么顺手,期待有更好的语言和框架 |
|
返回顶楼 | |
发表时间:2010-03-15
mercyblitz 写道 thinkry 写道 mercyblitz 写道 thinkry 写道 不是。fastcgi本质上是多进程同步模型,我的想法是为异步模型增加HTTP支持。按照这样混合使用能平衡性能和开发效率:
·异步模型:性能高,开发复杂度高。适用于访问量大的,业务简单的访问。例如判断是否登录 ·同步模型(fastcgi):性能较低,开发复杂度低。适用于逻辑复杂的场景。 你说是AsycWeb吗? 你要用C实现,还是Java呢? C++实现。在mmog游戏后台的一些Server中,一般能做到1万/秒的并发。当然有些逻辑比较重的主逻辑Server就另当别论了。 感觉现在做游戏后台的人挺多的,开发异步Server也变得平常了,一旦打通异步Server和HTTP之前的障碍,Web服务就能有更高性能了。 我个人不太赞成使用低级别的语言,因此C++不是特别好,利用高并发的编程语言来是实现,加快实现的速度。 视情况而定吧,我完成这个Server会跟大家分享下 |
|
返回顶楼 | |