Erlang 作为后端进程

Posted

技术标签:

【中文标题】Erlang 作为后端进程【英文标题】:Erlang as a backend process 【发布时间】:2010-10-29 13:46:48 【问题描述】:

我想使用 Erlang 进行一些后台处理和 Web 应用程序的东西。我阅读了它的并发处理和东西,我已经开始学习它。我特别想做的是使用 COMET 与客户端建立持久连接——Erlang 进程协调 HTTP 客户端连接。

    我需要一个基于 Erlang 的 Web 服务器吗? 对于实际实现,Erlang 中的“spawn”是如何工作的。我下载了 erlang 电子书并阅读了有关产卵的信息。对于我的基于 Web 的脚本,当两个客户端通过发出 HTTP 请求连接到同一个 Erlang 脚本时,我可以自动为每个客户端“生成”新线程并进行消息传递吗?

【问题讨论】:

【参考方案1】:
    不,你没有,但这是最简单的方法。您可以将 Erlang 与 libevent 结合使用,以实现更多 http://www.metabrew.com/article/a-million-user-comet-application-with-mochiweb-part-3/ 是的,生成新客户端很便宜,如果您想更便宜,请参阅上文。

【讨论】:

【参考方案2】:

我强烈建议使用基于 erlang 的网络服务器来处理彗星连接。 erlang 中的轻量级进程是将它用于此类事情的一半好处。

大多数 erlang 网络服务器框架都会为您处理生成。无需自己重新实现。请参阅 nitrogen 和 mochiweb 了解非常简单的彗星实现示例。

【讨论】:

【参考方案3】:

你看到http://beebole.com/erlang这个页面了吗?

它包含:

如何在 Ubuntu 上设置 Erlang 环境(使用 Mochiweb)

如何安装 nginx 网络服务器

使用 Erlang 构建小型 Web 应用的视频教程

【讨论】:

【参考方案4】:

您应该研究“YAWS”(高性能 HTTP 服务器)模块:易于编写,完全灵活。 YAWS 很容易安装:apt-get install yaws(至少在 Ubuntu 上)。

【讨论】:

【参考方案5】:

另一种选择是使用Nitrogen - 这允许在网页中轻松集成 Erlang 代码,包括成熟的网络服务器和彗星。

【讨论】:

以上是关于Erlang 作为后端进程的主要内容,如果未能解决你的问题,请参考以下文章

在 Erlang 中作为进程生成的函数内部定义的函数

Erlang 系统建模工具

Erlang 主管进程

基于 Erlang 的聊天(负载平衡和通知分发)

Erlang:控制Erlang进程崩溃时如何使连接的外部OS进程自动死亡?

在 Erlang 中将消息路由到 PID