gpt4 book ai didi

erlang - 你在 Erlang 上使用 Nitrogen 是什么体验?

转载 作者:行者123 更新时间:2023-12-03 10:13:07 25 4
gpt4 key购买 nike

我一直在查看 Nitrogen Project这应该是 Erlang 最成熟的 Web 开发框架。

Erlang,作为一门语言,令人印象深刻。然而,关于 Nitrogen,我不太热衷于使用 Erlang 相当不常见的语法(除非你是 PROLOG 中的本地人)来构建 UI。

与 Django 或 Rails 等其他主流 Web 框架相比,您对它有何经验?

最佳答案

到目前为止,我对 Nitrogen 所做的很少,但几个月来我一直在关注邮件列表,所以我想我有一些有用的东西要说。
对于您对 Erlang 和 Nitrogen 框架的语法的担忧,我认为这听起来像是纯粹的不熟悉,而不是不适合。客观地说,HTML 并不是一门漂亮的语言,而且它有很多怪癖。你现在已经习惯了,所以看起来并没有那么糟糕。给 Nitrogen/Erlang 一个机会,你可能会发现你很快就会习惯它。
对于您与其他语言和框架进行比较的问题,我想说最大的区别在于,使用 Nitrogen,整个网站都直接由 Erlang 运行时提供服务。 Ruby on Rails 有这样的模式,但它只用于测试。许多其他框架甚至不提供在单个长时间运行的进程中运行所有内容的选项。
在单个长时间运行的进程中运行整个 Web 应用程序及其底层基础架构对站点的运行方式具有重大影响:

  • 使用 Apache,每 N 个连接(其中 N=500 左右)每个子节点都会被杀死,并且您不能说给定子节点是否总是处理给定客户端的所有请求。由于 HTTP 是无状态的,但 Web 应用程序几乎总是需要一些客户端状态,因此 Apache 子节点必须重建其客户端状态 View ,作为处理新连接的一部分。默认情况下,这意味着返回磁盘以获取有关该客户端存储的持久数据。有像 memcached 这样的替代品,但这些不是内置在 LAMP 类型堆栈的核心中。使用 Erlang,没有任何东西会定期被杀死,并且 Erlang 提供了标准工具,例如 Mnesia,它提供了磁盘支持的内存数据库。
    顺便说一句,如果您熟悉 nginx ,它建立在与 Erlang 相同的原理上,并且出于同样的原因它很快。 nginx 和运行 web 服务器的 Erlang 实例的主要区别在于 nginx 不是编程环境,因此它仍然需要将大量处理委托(delegate)给外部代码。这意味着它与 Apache 共享相同的 IPC 和持久状态问题。
  • 因为运行时持续保持运行并且是一个功能齐全的编程环境,所以您可以在 Erlang 中构建系统的更多部分,而不是使用捆绑在一起的 LAMP 类型堆栈。这放大了上述好处。系统的各个部分可以通过消息传递和 Mnesia 而不是重量级的 IPC 和 MySQL 进行协调,并且所有部分都保持正常运行并持续运行,从而减少耗时的状态重建。
  • 十几个访问持久客户端状态数据存储的 Apache 子节点是一个基于锁的毛球。这些框架都透明地为您处理锁定等问题,但它们无法隐藏的是正确完成所有这些操作所需的时间。
    Erlang 是一种不纯的函数式语言,它暗示但不要求数据纯洁;它在构建时也考虑到了多处理,明确了运行时设计的核心。这两个事实意味着您不太可能花时间等待基于 Erlang 的服务器中的锁,而不是天真地构建在其他框架之一上的服务器。当然可以优化其他系统中的锁定延迟,但这真的是您想要做的吗?您是否想成为第 100 支必须学习如何在服务流行后优化其 Web 堆栈的团队,还是宁愿将这一切都交给工具来完成,这样您就可以把时间花在做其他人还没有做过的事情上?
  • 关于erlang - 你在 Erlang 上使用 Nitrogen 是什么体验?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2900827/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com