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組件進行測試,你不能真正得到更多的功能。