从我到目前为止读过有关Mochiweb的所有文章中,我一遍又一遍地听到Mochiweb提供了很好的可扩展性。我的问题是,Mochiweb如何确切地获得其可伸缩性属性?它是来自Erlang固有的可伸缩性属性,还是Mochiweb具有明确使其扩展良好的其他代码?换句话说,如果我自己在Erlang中编写一个简单的HTTP服务器,并使用简单的“循环”(递归功能)来处理请求,它是否具有与使用Mochiweb框架构建的简单Web服务器相同的可伸缩性?

更新: 我不打算实施完整的Web服务器,以支持所有可能的功能。我的要求非常具体 - 处理带有固定控件的HTML表单的发布数据。

有帮助吗?

解决方案

据我所知,摩奇韦布本身并不可扩展。这是一个快速,微小的服务器库,每秒可以处理数千个请求。它的方式与“可伸缩性”无关(除了调整数量 mochiweb_acceptor在任何给定时间都在听)。

您使用Mochiweb获得的是一个坚实的Web服务器库,以及Erlang的可扩展性功能。如果您想运行单个Mochiweb服务器,当请求进来时,由于Erlang的分布式节点基础架构和便宜的消息传递,您仍然可以将请求的处理工作处理到所需的任何机器。如果您想运行多个Mochiweb服务器,则可以将它们放在负载平衡器后面,并使用MNESIA的分布式功能来同步机器之间的会话数据。

关键是,摩西韦布很小又快 (足够). 。 Erlang是可伸缩性功率工具。


如果您滚动自己的服务器解决方案,则可能会遇到或击败Mochiweb的效率和“可扩展性”。但是然后,您必须重新考虑他们已经想到的一切,并且必须自己进行战斗。

其他提示

大概。 :-)

如果要编写一个在单独的过程中处理每个请求的Web服务器(Erlang中的轻质线程),则可以轻松达到相同的“可伸缩性”。当然,该功能集将有所不同,除非您实现Mochiweb拥有的所有内容。

Erlang还对许多机器之间的分配也有很大的支持,这可能是可以使用的,以获得更大的可扩展性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top