1

我很想看看可扩展网络服务应用程序的体系结构。我对协议或所使用的语言不感兴趣,更多的是设计的优雅和可扩展性。当然,Apache会想到,但我想知道是否有人有任何其他例子可以与他们合作。什么是精心设计的网络服务器的例子?

编辑:只是为了澄清,我问的是实现网络协议的服务器应用程序。在这个意义上,Web开发框架不是网络服务器。协议可以包括但不限于:FTP,HTTP,XMPP,SNMP,IMAP等。良好的网络服务器实现某种并行性,专注于可伸缩性,但也具有良好的可扩展性。

回答

3

nginx(另请参阅nginx wiki)是一个HTTP服务器和邮件代理,它在可伸缩性和资源效率方面赢得了良好声誉。它使用基于事件的架构(支持epoll,kqueue等)来保持内存使用率低,即使在相当大的负载下。

0

Django的web框架是一个很好的服务器。对于这个问题,所有的Web应用程序服务器都是非常可扩展的。

+0

这不是一个真正的网络服务器,因为它没有实现任何网络协议。 – bmdhacks 2009-05-01 17:19:50

+0

它似乎实现了HTTP,因为它是一个Web服务器。既然你说它没有实现HTTP,你的问题很混乱。 – 2009-05-01 18:41:32

0

我会说ASP.NET是一个设计良好的服务器应用程序。编程模型是可扩展的(允许您使用用户编写的模块来挂接请求生命周期的每个事件)。

也非常scalabale和performant。

单独的缓存功能是值得的。我可以给你一个ASP.NET的通用链接,但我相信你对它很熟悉。

http://www.asp.net/

+0

异步网页是另一个伟大的创意 – Sesh 2009-05-01 18:21:48

0

对于写作的网络服务器我喜欢和POE工作。

+0

POE是构建网络服务器的一个非常有趣的工具,但它本身不是网络服务器。 – bmdhacks 2009-05-01 17:44:29

0

Ejabberd是用Erlang编写的XMPP服务器。 Erlang编程语言的本地消息传递非常适合即时消息传递服务器,该服务器允许Ejabberd非常模块化,并且展现出很多并行性。

0

Asterisk PBX是一个开源电话服务器,实现了包括SIP在内的多种VoIP协议。它相当模块化,并且令人难以置信地可配置,即使使用自己的编程语言AEL来描述IVR拨号规划交互。

0

Jetty对我来说效果不错。它速度快,在负载下运行良好。当然,性能将取决于您在Jetty上部署的应用程序类型。

0

我想看看OpenSSH,这是众所周知的实际上是不可逾越的。这主要归功于OpenBSD集团的深入审查过程,但我怀疑它也与架构有关。

对于可扩展性,我会更深入OpenSSL(用于OpenSSH的底层协议工具包)。

0

由于没有人提到它:IIS。

这是一个非常可扩展的Windows应用程序(它本身是非常可扩展的)。

对ASP和其他.NET组件进行测试,你不能真正得到更多的功能。