0

注意:这个问题很大程度上受到我构建的 Web 应用程序的主要要求的影响:高可用性和容错性。所有其他要求(如可扩展性和用户数量)在这里都不是问题。

我从这个社区的一位成员那里得到并建议使用 Erlang Web 服务器作为我的 Web 应用程序的后端。

建议是我可以使用 Mochiweb 作为后端,使用 Django/Ruby on Rails 作为前端,使用 JSON 和面向服务的模型。

我能理解的这种方法的唯一明显优势是前端部分的开发“照常”——常规的 MVC 东西、Ru​​by on Rails 或任何其他人选择的通用框架。

但是其他优势呢?它们真的存在吗?

当然,Erlang/OTP 为所讨论的系统增加了容错能力,但是添加 Web 前端层不会将这个容错级别降低到低得多的水平吗?

难道我们不是通过将 Ruby on Rails 与 Mochiweb 耦合来引入“单点故障”吗?当然,Mochiweb 可以处理故障,但是如果前端出现问题怎么办?

4

3 回答 3

1

从技术上讲,Erlang/OTP 平台本身并没有做任何关于容错和高可用性的事情。它只是允许轻松实现并发和分布式软件。在一台机器上运行的 Erlang Web 服务器可能会像所有其他机器一样失败 - 只是因为硬件出现故障。

因此,对于 HA 站点,更重要的是为硬件和软件故障情况提供适当的冗余和回退方案,而不是使用任何特定的软件堆栈或平台。与其他平台相比,在 Erlang 中实现可能会稍微容易一些(当然,如果您熟悉它的话),但使用纯 Ruby/Python/Java/C 或几乎任何其他平台都可以实现完全相同的结果。

于 2012-04-25T12:42:16.690 回答
1

网络行业在设置容错前端方面拥有大量经验。只需设置多个 Web 机器(通常是轻型反向代理)和某种 HA 管理器(内置于许多负载平衡解决方案中)。后端通常是较难的部分。

于 2012-04-22T11:28:44.410 回答
0

如果后端是其他技术,我不会将 Erlang 用作前端 Web 服务器。

当后端也使用 Erlang 时,Erlang 作为 Web 服务器的许多好处就体现出来了。其中最大的是降低 I/O 成本。当您的前端和后端是完全独立的软件堆栈时,您将失去这种优势。

如果你打算在 Rails 上构建一些东西,你不妨使用一些你可以在前端获得更多帮助的东西,比如 nginx。

于 2012-04-24T23:42:20.920 回答