从我迄今为止所读到的关于Mochiweb的所有文章中,我一遍又一遍地听说Mochiweb提供了非常好的可伸缩性。我的问题是,Mochiweb到底是如何获得其可伸缩性属性的?它是来自Erlang固有的可伸缩性属性,还是Mochiweb有其他代码显式地使它能够很好地扩展?换句话说,如果我自己用Erlang编写一个简单的HTTP服务器,并使用一个简单的“循环”(递归函数)来处理请求,那么它是否具有与使用Mochiweb框架构建的简单web服务器相同的可伸缩性?
更新:,我不打算实现一个完整的web服务器,支持所有可能的功能。我的要求是非常具体的-处理来自HTML表单的带有固定控件的POST数据。
发布于 2010-08-17 19:25:20
据我所知,MochiWeb本身并不是可伸缩的。它是一个快速的、微小的服务器库,每秒可以处理数千个请求。它这样做的方式与“可伸缩性”无关(除了调整在任何给定时间监听的mochiweb_acceptor的数量)。
通过MochiWeb,您可以得到一个坚实的web服务器库,以及Erlang的可伸缩性特性。如果您想运行单个MochiWeb服务器,当请求传入时,您仍然可以将处理该请求的工作卸载到您想要的任何机器上,这要归功于Erlang的分布式节点基础结构和廉价的消息传递。如果您想要运行多个MochiWeb服务器,可以将它们放在负载均衡器后面,并使用mnesia的分布式特性来同步计算机之间的会话数据。
关键是,MochiWeb是小而快速的(够了)。Erlang是可伸缩性的强大工具。
如果您推出自己的服务器解决方案,可能会遇到或击败MochiWeb的效率和“可伸缩性”。但是你必须重新考虑他们已经想到的一切,并且你必须自己去测试它。
发布于 2010-05-25 10:31:20
可能吧。:-)
如果您要编写一个web服务器,在一个单独的进程中处理每个请求(Erlang中的轻量级线程),那么您可以很容易地达到相同的“可伸缩性”。当然,特性集将是不同的,除非您实现Mochiweb所拥有的所有功能。
Erlang也有很好的内置支持在许多机器之间分发,这可能被用来获得更大的可伸缩性。
https://stackoverflow.com/questions/2903355
复制相似问题