关于 HTTP 服务的 Erlang 设计建议

Posted

技术标签:

【中文标题】关于 HTTP 服务的 Erlang 设计建议【英文标题】:Erlang Design Advice regarding HTTP services 【发布时间】:2011-10-09 02:07:42 【问题描述】:

我是 Erlang 的新手,但由于我的并发需求,我想开始使用一个感觉适用于该技术的应用程序。

这张照片突出了我想做的事情。

http://imagebin.org/163917

消息从队列中拉出并路由到工作进程,这些工作进程之前已设置为用户在 Django 应用程序中输入一些表单的结果。设置需要一些额外的数据库(预先存在的数据库,所以我不想为此位使用 ETS/DETS)查找,然后与消息路由器对话并创建相关进程。

考虑到我可能想在未来向我的 Django 应用询问所有需要设置的工作人员并首先为他们分配任务,我的问题随之而来,在这里交流的最佳方式是什么。我喜欢 HTTP/json 并且已经阅读了我在 Mochiweb 和 MochiJson 上能找到的一些东西,我认为这可以满足我的需求。我正计划拥有一个 OTP 主管和应用程序,那么拥有一个单独的 mochiweb 进程然后将 erlang 消息传递给路由器是否明智?

由于所有教程都在谈论如何使用脚本创建目录结构,我在使用 mochiweb 时遇到了一些困难,这似乎使 mochiweb 以设计为中心——这不是我想要的,我想要一个偶尔工作的轻量级 mochiweb 进程。

请撕开这个,欢迎所有的cmets。

干杯

戴夫

【问题讨论】:

所有 mochiweb 教程都从创建框架应用程序的标准脚本开始,因为它使您无需从头开始创建少量文件。在每个教程中教人们如何做这部分是一件真正的苦差事。此脚本的输出与您在不使用 mochiweb 的应用程序中生成的非常相似,它只是向 $app_sup.erl 添加了一些内容并为您创建了一个 $app_web.erl一些示例代码。 【参考方案1】:

mochiweb 很棒,但我认为您真正想要的是webmachine。完整的文档可在 here 和 here 获得。简而言之,webmachine 是一个用于制作 REST 应用程序的工具包,我认为这正是你想要的。它在幕后使用 mochiweb,但隐藏了所有复杂(和未记录的)细节。当您创建一个 webmachine 项目时,您将获得一个完整的 OTP 应用程序和一个默认资源。从那里您将执行以下操作:

    添加您自己的资源(或修改 + 重命名默认资源)。 修改调度程序,使您的资源和路径对您的应用有意义。 添加代码以创建和监控您的工作进程 - 可能是 gen_server 和主管。有关想法,请参阅this 和相关文章。请注意,您需要在创建项目时提供给您的主要主管下开始。 修改您的资源以与您的gen_server 通信。

我没有完全按照您的要求进行其他所有问题 - 在 cmets 中回答任何后续问题可能会更容易。

【讨论】:

以上是关于关于 HTTP 服务的 Erlang 设计建议的主要内容,如果未能解决你的问题,请参考以下文章

MySQL高级--10--ER模型数据表的设计原则 数据库对象编写建议

erlang-17版本的编码方式

我为何从 Python 转向 Erlang

499元在SDCC遇见Erlang之父Joe Armstrong

[erlang]cowboy handler模块的使用

关于自动化测试脚本设计那些事er