我有兴趣研究可扩展网络服务应用程序的体系结构。我对协议或使用的语言不太感兴趣,更多的是设计的优雅和可扩展性。当然会想到Apache,但我想知道是否有人有任何其他的例子,他们很高兴能与之合作。
编辑:只是为了澄清,我问的是一个实现网络协议的服务器应用程序。从这个意义上讲,Web开发框架不是网络服务器。协议可能包括但不限于:FTP,HTTP,XMPP,SNMP,IMAP等。良好的网络服务器实现某种并行性,专注于可伸缩性,同时具有良好的可扩展性。答案 0 :(得分:3)
nginx(另请参阅nginx wiki)是一个HTTP服务器和邮件代理,在可扩展性和资源效率方面赢得了声誉。它使用基于事件的架构(支持epoll,kqueue等),即使在相当大的负载下也能保持较低的内存使用率。
答案 1 :(得分:2)
想想我会在这里抛弃Apache以防止每个人同时回答它。
答案 2 :(得分:0)
Django的web框架是一个不错的服务器。就此而言,所有Web应用程序服务器都是非常可扩展的。
答案 3 :(得分:0)
我想说ASP.NET是一个设计良好的服务器应用程序。编程模型是可扩展的(允许您使用用户创作的模块挂钩请求生命周期的每个事件)。
也非常scalabale和高性能。
仅缓存功能是值得的。我可以给你一个ASP.NET的通用链接,但我相信你对它很熟悉。
答案 4 :(得分:0)
对于编写网络服务器,我喜欢使用POE。
答案 5 :(得分:0)
Ejabberd是用Erlang编写的XMPP服务器。 Erlang编程语言的本机消息传递非常适合即时消息服务器,它允许Ejabberd非常模块化,并且表现出很多并行性。
答案 6 :(得分:0)
Asterisk PBX是一个开源电话服务器,它实现了许多VoIP协议,包括SIP。它是相当模块化的,并且具有令人难以置信的可配置性,即使使用它自己的各种编程语言AEL来描述IVR拨号方案交互。
答案 7 :(得分:0)
Jetty对我来说效果很好。它速度快,在负载下运行良好。当然,性能取决于您在Jetty上部署的应用程序类型。
答案 8 :(得分:0)
我建议你阅读关于ACE的这些书:
它们包含许多关于设计网络应用程序的非常有用的信息。
答案 9 :(得分:0)
我会看一下OpenSSH,众所周知,它实际上是不可穿透的。这主要是由于OpenBSD小组的密集审核流程,但我怀疑它也与架构有关。
为了扩展性,我会更深入地了解OpenSSL(用于OpenSSH的底层协议工具包)。
答案 10 :(得分:0)
由于没有人提及它:IIS。
这是一个非常易于扩展的Windows应用程序(本身非常易于扩展)。
掌握ASP和其他.NET组件,你不可能真正获得更多功能。