我很想看看可擴展網絡服務應用程序的體系結構。我對協議或所使用的語言不感興趣,更多的是設計的優雅和可擴展性。當然,Apache會想到,但我想知道是否有人有任何其他例子可以與他們合作。什麼是精心設計的網絡服務器的例子?
編輯:只是爲了澄清,我問的是實現網絡協議的服務器應用程序。在這個意義上,Web開發框架不是網絡服務器。協議可以包括但不限於:FTP,HTTP,XMPP,SNMP,IMAP等。良好的網絡服務器實現某種並行性,專注於可伸縮性,但也具有良好的可擴展性。
我很想看看可擴展網絡服務應用程序的體系結構。我對協議或所使用的語言不感興趣,更多的是設計的優雅和可擴展性。當然,Apache會想到,但我想知道是否有人有任何其他例子可以與他們合作。什麼是精心設計的網絡服務器的例子?
編輯:只是爲了澄清,我問的是實現網絡協議的服務器應用程序。在這個意義上,Web開發框架不是網絡服務器。協議可以包括但不限於:FTP,HTTP,XMPP,SNMP,IMAP等。良好的網絡服務器實現某種並行性,專注於可伸縮性,但也具有良好的可擴展性。
nginx(另請參閱nginx wiki)是一個HTTP服務器和郵件代理,它在可伸縮性和資源效率方面贏得了良好聲譽。它使用基於事件的架構(支持epoll,kqueue等)來保持內存使用率低,即使在相當大的負載下。
我想在這裏丟掉Apache以防止大家同時應答。
Django的web框架是一個很好的服務器。對於這個問題,所有的Web應用程序服務器都是非常可擴展的。
我會說ASP.NET是一個設計良好的服務器應用程序。編程模型是可擴展的(允許您使用用戶編寫的模塊來掛接請求生命週期的每個事件)。
也非常scalabale和performant。
單獨的緩存功能是值得的。我可以給你一個ASP.NET的通用鏈接,但我相信你對它很熟悉。
異步網頁是另一個偉大的創意 – Sesh 2009-05-01 18:21:48
Ejabberd是用Erlang編寫的XMPP服務器。 Erlang編程語言的本地消息傳遞非常適合即時消息傳遞服務器,該服務器允許Ejabberd非常模塊化,並且展現出很多並行性。
Asterisk PBX是一個開源電話服務器,實現了包括SIP在內的多種VoIP協議。它相當模塊化,並且令人難以置信地可配置,即使使用自己的編程語言AEL來描述IVR撥號規劃交互。
Jetty對我來說效果不錯。它速度快,在負載下運行良好。當然,性能將取決於您在Jetty上部署的應用程序類型。
我會推薦閱讀ACE這些書:
它們包含了很多有關設計網絡應用程序非常有用的信息。
由於沒有人提到它:IIS。
這是一個非常可擴展的Windows應用程序(它本身是非常可擴展的)。
對ASP和其他.NET組件進行測試,你不能真正得到更多的功能。
這不是一個真正的網絡服務器,因爲它沒有實現任何網絡協議。 – bmdhacks 2009-05-01 17:19:50
它似乎實現了HTTP,因爲它是一個Web服務器。既然你說它沒有實現HTTP,你的問題很混亂。 – 2009-05-01 18:41:32