我对研究可扩展网络服务应用程序的架构很感兴趣。我对协议或使用的语言不太感兴趣,对设计的优雅和可扩展性更感兴趣。当然会想到 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 是一个设计良好的服务器应用程序。编程模型是可扩展的(允许您使用用户编写的模块连接到请求生命周期的每个事件)。
也非常可扩展和高性能。
仅缓存功能就值得了。我可以给你一个指向 ASP.NET 的通用链接,但我相信你对它相当熟悉。
对于编写网络服务器,我喜欢使用POE。
Ejabberd是一个用 Erlang 编写的 XMPP 服务器。Erlang 编程语言的本机消息传递非常适合即时消息服务器,这使得 Ejabberd 非常模块化,并展示了很多并行性。
Asterisk PBX是一个开源电话服务器,它实现了包括 SIP 在内的许多 VoIP 协议。它是相当模块化的,并且非常可配置,甚至使用它自己的某种编程语言 AEL 来描述 IVR 拨号方案交互。
码头对我来说效果很好。它速度快,在负载下运行良好。当然,性能将取决于您在 Jetty 上部署的应用程序类型。
由于没有其他人提到它:IIS。
它是一个非常可扩展的 Windows 应用程序(它本身是非常可扩展的)。
使用 ASP 和其他 .NET 组件,您将无法获得比这更通用的功能。