关于 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模型数据表的设计原则 数据库对象编写建议