我正在开发使用Ruby on Rails网站。 我想开发的REST API(JSON)分别以最大限度地提高性能,rails堆栈只是带走了太多。
是否有任何性能基准了吗? 你认为会产生最好的性能? 我目前思考以下,因为这是我有经验。 还有什么我应该考虑? 它应该是轻量级的。
- 的node.js
- 斯卡拉喷雾(http://spray.io/)
- 红宝石西纳特拉
谢谢!
我正在开发使用Ruby on Rails网站。 我想开发的REST API(JSON)分别以最大限度地提高性能,rails堆栈只是带走了太多。
是否有任何性能基准了吗? 你认为会产生最好的性能? 我目前思考以下,因为这是我有经验。 还有什么我应该考虑? 它应该是轻量级的。
谢谢!
摘要 :最大化你的表现作为一个开发者。 使用栈,你知道最好的。 首先使它工作, 然后使它快。
是否有任何性能基准了吗?
有各种各样的基准那里。 比方说,Node.js的可以处理100K HPS(每秒helloworlds)和西纳特拉唯一能做的80K。 这是什么告诉你吗? 没有。
此外,有时更高的性能是有很大的成本。 以红宝石C扩展,例如。 当然,C运行比Ruby快,但它可以防止其他线程上的其他核心(因为GIL)的运行。
所以,不要只是从互联网基准数字选择技术。 有这么多的因素除了原料HPS数量来考虑。
链接 :如果你认为Rails是太重了,你应该尝试轨的API 。 它基本上是轨道的精简版(你不需要在API服务器之类的Cookie身份验证或MSIE呈现佣工)。
我运行处理一些负载的API服务器。 第一个版本是用Rails编写。 然后我想:“嘿,Rails是一个臃肿的(C),让我们重写一切与西纳特拉”。 然后,我不得不无奈陆续到来的波浪。 原来的Rails做了很多小而有用的东西,我没有珍惜。 我放弃了,使用Rails再次改写了它(应用经验教训等),并从此幸福地生活着。
这落入“我应该重写用C我的Apache / PHP的网站使用自定义的网络服务器,因为它是缓慢的”桶。
我投票选择自己喜欢的堆在工作,利用良好的缓存和使用任何操作码优化您已经可用,如果你的代码不编译。 然后确保你有水平,如果需要处理的业务足够的服务器资源和负载均衡。
我还没有看到很多的API,其主要的原因表现不佳是技术堆栈的,除非他们正在处理的Facebook / Twitter的流量大小,或做计算密集型工作的选择。
你会看到在几乎任何堆栈,如果利用得当更多的等待时间发生在您选择:
我还高,如果你已经使用了RoR的堆栈坚持下去建议。 试图优化和代码在不同的堆栈通常会导致两个较弱的代码 - 让你开发的大脑在一个时间集中在futz的一个池。
这真的取决于你的usecases和经验的团队/首选项 - 但是,如果你是真正的开放式约不管栈,我们个人的经验是:
斯卡拉是一个胜利者,因为我们的店有很多在JVM的经验。 Hoever,我们希望利用节点更多的未来做了简单性。
我敢肯定,有经验的Ruby家伙能做的改善和调整的东西,但它是不是值得我们学习曲线和一个非首发。
退房喷雾 -我喜欢它,因为它是轻量级的,精心设计的(模块化的,异步的,理智的API)。 对于Web服务的东西大多数Web框架只是配备了行李太多。