1

我对研究可扩展网络服务应用程序的架构很感兴趣。我对协议或使用的语言不太感兴趣,对设计的优雅和可扩展性更感兴趣。当然会想到 Apache,但我想知道是否有人有任何其他让他们乐于使用的示例。

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

4

11 回答 11

3

nginx(另见nginx wiki)是一个 HTTP 服务器和邮件代理,在可扩展性和资源效率方面享有盛誉。它使用基于事件的架构(支持 epoll、kqueue 等),即使在相当大的负载下也能保持较低的内存使用率。

于 2009-05-01T18:20:07.317 回答
2

想我会在这里扔掉Apache以防止每个人同时回答它。

于 2009-04-23T20:33:53.240 回答
0

Django的 web 框架是一个不错的服务器。就此而言,所有 Web 应用程序服务器都具有很强的可扩展性。

于 2009-04-23T20:37:04.030 回答
0

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

也非常可扩展和高性能。

仅缓存功能就值得了。我可以给你一个指向 ASP.NET 的通用链接,但我相信你对它相当熟悉。

http://www.asp.net/

于 2009-05-01T17:33:38.817 回答
0

对于编写网络服务器,我喜欢使用POE

于 2009-05-01T17:37:03.427 回答
0

Ejabberd是一个用 Erlang 编写的 XMPP 服务器。Erlang 编程语言的本机消息传递非常适合即时消息服务器,这使得 Ejabberd 非常模块化,并展示了很多并行性。

于 2009-05-01T17:47:25.943 回答
0

Asterisk PBX是一个开源电话服务器,它实现了包括 SIP 在内的许多 VoIP 协议。它是相当模块化的,并且非常可配置,甚至使用它自己的某种编程语言 AEL 来描述 IVR 拨号方案交互。

于 2009-05-01T17:51:24.560 回答
0

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

于 2009-05-01T18:08:26.860 回答
0

我建议阅读有关 ACE 的这些书籍:

它们包含很多关于设计网络应用程序的非常有用的信息。

于 2009-05-01T18:21:27.640 回答
0

我会看看OpenSSH,它以几乎无法穿透而闻名。这主要是由于 OpenBSD 小组的密集审查过程,但我怀疑它也与架构有关。

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

于 2009-05-01T18:28:44.487 回答
0

由于没有其他人提到它:IIS。

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

使用 ASP 和其他 .NET 组件,您将无法获得比这更通用的功能。

于 2009-05-01T18:40:35.193 回答