我有一个Rails webapp [部署在Heroku上],它使用Heroku的rake:cron功能,在重复的基础上对其他站点进行一系列HTTP调用。目前的情况并不理想; rake:cron进程在一个线程中执行,这意味着HTTP调用是按顺序进行的;这意味着在同一站点的呼叫之间需要很长时间[通常为2分钟]。
我想并行执行此过程,并将调用之间的时间缩短到10秒。看过凯文史密斯的“实践中的二郎”后,我就出售了使用Erlang作为替代后端的想法。我试图弄清楚[给出Damien Katz's comments],我是否应该a)在Erlang,前端和所有中重写整个webapp或者b)维护一个分裂结构,使用Rails前端/ Erlang后端。
我喜欢在项目中使用100%Erlang堆栈的想法;我需要使用某种Erlang Web框架[氮? Erlyweb?];我担心他们还不够成熟,我会花时间和他们一起陷入项目的网络部分。
有谁有意见?感谢。
答案 0 :(得分:2)
对访问者的实际影响是什么(HTTP后端呼叫之间的两分钟间隔)?
如果没有太大区别,我会说这听起来像是过早的优化,而且你现在最好不要跳过Erlang。
答案 1 :(得分:2)
之前的两张海报几乎涵盖了你问题的哲学方面。因此,我将回答框架成熟度/陷入问题的一部分。
如果您决定在任何原因下想要在erlang中重写webapp,那么我就不会太担心框架会让您失望。 erlyweb和氮气都已经足够完整,你可以很快地使用它们。我在氮气中开发了一个相当复杂的敏捷项目管理应用程序,发现它非常直观,而且我并不缺乏我需要的功能。几个小时的晚上和几个星期后,我有一个正常运行的应用程序。
关于使用哪一个取决于您要构建的应用程序类型。
氮气的目标是极其动态的网络应用。大部分页面都是使用javascript呈现的,并且它是高度事件驱动的。
与富客户端类型的应用程序相比,ErlyWeb更适合于内容主要关注的网站。它使用了MVC风格的architecure。
祝你好运不已。
答案 2 :(得分:0)
这取决于。你知道多少Erlang?你已经写了多少代码? 你有多少项目经验?这是为了工作还是为了好玩?
从头开始重写项目通常会导致灾难,尤其是在您尝试的时候 一路上学习一门新语言。在我看来,如果你已经精通两种语言,你就不会问这个问题,在这种情况下,我建议你只要坚持Ruby,如果它是一个工作项目。
我不同意上述海报,即更改语言是过早优化,如果有必要。 改变语言是一件大事。它不能在最后一刻完成。 但是,由于您概述的原因,我可能根本不会更改语言。 如果你没有任何其他原因而不是切换性能,你可能应该只是 看看Ruby中的多线程或其他一些优化。
答案 3 :(得分:0)
我正在为工作使用正确的工具。除非你完全没有理由将两者连接在一起。