使用nodejs web服务器来提供完整的rails应用程序
我和4位同事将开始一个大学项目,并决定使用Ruby on Rails,因为它有许多我们需要和喜欢的库。
该项目是一个研究人员的网站,可以让他们创建账户,登录/注销,发布研究成果。
该项目必须具有散列标签,并且研究可以连接在一起,访问者必须能够通过标签进行搜索并查看相关研究,我们可以使用知识库向人们提供这些知识。
因此,对于我的问题:性能,项目文件中提到我们应该有良好的表现。
我听说过Rails没有很好的性能的声誉(不知道这是否改变了,但是...)。
我正在考虑使用nodejs,因为它非常快速且可扩展,但不幸的是我没有找到我们需要的所有库。
我搜索并搜索了一种使用nodejs web服务器(expressjs或其他)的方法,仅用于使用Rails来提供和编写整个应用程序,但我没有找到在nodejs上执行ruby的方法。
那么如何做到这一点? 如果我使用Nginx作为代理服务器,那么我可以使用nodejs作为主服务器(以及如果我可以如何操作?)。
提前致谢。
PS
我们想提一下,我们将使用最新版本的Ruby,RoR。
至于Node.js,只要达到目标,我们并不介意使用5或4。
扩展Web应用程序更多的是关于良好的体系结构和最佳实践,而不是关于Web框架/语言。
RoR在Twitter决定转用Scala之初就表现出了糟糕的声誉。 实际上,他们只是在Scala后端切换了一些重型进程,并利用RoR的其他功能。
有可能你的应用程序不会像Twitter一样扩展。 即使你打算去,你也应该使用类似他们的方法:
除了推特之外,其他使用RoR的大型网站还有Github,AirBnB,Basecamp,Hulu,Shopify等等。
结论:所以我的观点是,RoR表现的不错,以至于你不必担心性能。 使用它,因为它是有趣的写和拥有你需要的库,并担心缩放时,如果它需要。
另外,很抱歉让你失望,但在NodeJ上运行RoR是不可能的,NodeJs是服务器端Javascript,所以它不能运行Ruby。 或者,您可以使用JRuby在JVM上运行RoR,但这是另一回事。 如果我是你,我会坚持使用像Passenger和Unicorn这样的Ruby web服务器。
我建议你使用Nginx作为负载平衡器,并为你的Rails应用程序缓存,否则请用JavaScript编写你的应用程序,我的意见。 NodeJS是一个服务器端JavaScript,它不可能在节点上运行ruby应用程序。 Ruby比NodeJS慢,只是用循环和字符串做一个简单的测试,你会看到一个主要的区别。
在10 mio迭代的Javascrip中,您将在一秒钟之内看到结果,有时甚至会有近半秒的时间。
var str = 'blab lablaejd ksjdhsdlnsdsdksdkfnvdfvjeefvkdnfvkjfvidfvjndfvnfvfvovhelloasdkjfiweefsdffh';
var newstring;
var start, end,i;
start = new Date().getTime() / 1000;
for(i = 0; i<10000000; i++) {
var index = str.indexOf("hello");
newstring = str.slice(index, index+5);
}
console.log(newstring);
end = new Date().getTime() / 1000;
console.log(end-start);
document.getElementById("str").innerHTML = newstring;
document.getElementById("time").innerHTML = end-start;
<p id="str"></p>
<p id="time"></p>
链接地址: http://www.djcxy.com/p/64669.html
上一篇: use a nodejs web server to serve a full rails application