【发布时间】:2012-01-25 16:42:41
【问题描述】:
我有一个执行一些业务逻辑的 Erlang/OTP 应用程序。它是用 Erlang 编写的,主要是为了容错,因为我可以轻松地重新启动系统崩溃的组件之一(高正常运行时间是最重要的要求)。 它的每个组件都执行某种特定的“并行”计算。
作为一个工作周期的结果,应用程序会生成一个值列表。我们称这个 Erlang/OTP 应用程序为“后端”。
此 Erlang/OTP 应用程序还将使用 PostgreSQL 服务器将结果存储在持久存储中,并存储其计算所需的额外元信息(尚未实现)。
接下来我需要为这个 Erlang/OTP 应用程序添加一个前端 - 一个简单的基于 Web 的解决方案,可以服务于 Web 用户:接受他/她的计算请求,要求后端执行计算并从后端将结果返回给用户。
没有可扩展性要求,我认为每天最大用户数不能超过1000。
所以我现在的任务是为我的后端 Erlang/OTP 应用程序实现一个通用前端(通用意味着我有一个典型的用例:访问站点、注册、登录、使用应用程序、获取结果显示在一个漂亮的 ajax'y 网页上,退出)。
一方面,我知道代码重用可以为我节省大量时间:例如,使用 Ruby on Rails,我可以免费获得用户身份验证、密码存储、ajax 接口和许多其他东西。
另一方面,我对设计一个包含 Erlang/OTP + PostgreSQL 数据库服务器后端和作为前端的 Web 框架(RoR、Django 等)的应用程序一无所知。
我脑海中浮现出很多问题:Erlang/OTP 和 web 框架是否应该使用同一个 PostgreSQL 数据库来共享结果?将计算请求从 Web 框架发送到 Erlang/OTP 应用程序并将其取回的最佳方式是什么?我如何监督 PostgreSQL 服务器 - 它不在 OTP 的容错范围内?
一般来说,我有一些异构软件组件,我想用它们构建一个工作系统(“主要”组件是 Erlang/OTP 应用程序)。
我应该从哪里开始这项任务?您能给我任何建议或提示,可以阅读哪些资源吗?
附:我尝试阅读this 并点击链接,但不太了解。
UPD: 我知道 Chicago Boss 和其他 Erlang 网络框架确实存在,但我怀疑它们中的任何一个都有如此成熟的环境、充满活力的社区以及不同插件和库的巨大变化,例如例如 Ruby on Rails、Django 或任何基于 PHP 的 MVC 框架。正确的?
UPD2:也许我必须更深入地阐述这一点:我还需要前端尽可能可维护。在 Erlang 中做这意味着我可能会遇到寻找合适的开发人员来维护它的问题;在 RoR、Django 等中做这意味着我可以很容易地找到工作人员来维护和发展前端。
【问题讨论】:
-
我也编辑了我的答案。请查看答案更新。谢谢
标签: architecture erlang frontend backend erlang-otp