【问题标题】:Advantages of using an Erlang web server for a web application将 Erlang Web 服务器用于 Web 应用程序的优势
【发布时间】:2012-05-03 06:19:20
【问题描述】:

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

我从这个社区的一位成员那里得到了advice 使用 Erlang 网络服务器作为我的网络应用程序的后端。

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

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

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

当然,Erlang/OTP 为相关系统添加了容错功能,但是添加 Web 前端层不会将容错级别降低到更低的级别吗?

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

【问题讨论】:

    标签: service erlang high-availability fault-tolerance mochiweb


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

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

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 2019-05-16
          • 2017-01-29
          • 2013-05-09
          • 1970-01-01
          • 1970-01-01
          • 2012-10-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多