高性能REST API - 哪些语言/堆栈? [关闭](High-performance RE

2019-08-03 09:30发布

我正在开发使用Ruby on Rails网站。 我想开发的REST API(JSON)分别以最大限度地提高性能,rails堆栈只是带走了太多。

是否有任何性能基准了吗? 你认为会产生最好的性能? 我目前思考以下,因为这是我有经验。 还有什么我应该考虑? 它应该是轻量级的。

  • 的node.js
  • 斯卡拉喷雾(http://spray.io/)
  • 红宝石西纳特拉

谢谢!

Answer 1:

摘要 :最大化你的表现作为一个开发者。 使用栈,你知道最好的。 首先使它工作, 然后使它快。

是否有任何性能基准了吗?

有各种各样的基准那里。 比方说,Node.js的可以处理100K HPS(每秒helloworlds)和西纳特拉唯一能做的80K。 这是什么告诉你吗? 没有。

此外,有时更高的性能是有很大的成本。 以红宝石C扩展,例如。 当然,C运行比Ruby快,但它可以防止其他线程上的其他核心(因为GIL)的运行。

所以,不要只是从互联网基准数字选择技术。 有这么多的因素除了原料HPS数量来考虑。

链接 :如果你认为Rails是太重了,你应该尝试轨的API 。 它基本上是轨道的精简版(你不需要在API服务器之类的Cookie身份验证或MSIE呈现佣工)。


个人故事

我运行处理一些负载的API服务器。 第一个版本是用Rails编写。 然后我想:“嘿,Rails是一个臃肿的(C),让我们重写一切与西纳特拉”。 然后,我不得不无奈陆续到来的波浪。 原来的Rails做了很多小而有用的东西,我没有珍惜。 我放弃了,使用Rails再次改写了它(应用经验教训等),并从此幸福地生活着。



Answer 2:

这落入“我应该重写用C我的Apache / PHP的网站使用自定义的网络服务器,因为它是缓慢的”桶。

我投票选择自己喜欢的堆在工作,利用良好的缓存和使用任何操作码优化您已经可用,如果你的代码不编译。 然后确保你有水平,如果需要处理的业务足够的服务器资源和负载均衡。

我还没有看到很多的API,其主要的原因表现不佳是技术堆栈的,除非他们正在处理的Facebook / Twitter的流量大小,或做计算密集型工作的选择。

你会看到在几乎任何堆栈,如果利用得当更多的等待时间发生在您选择:

  1. 不必要的大量数据到客户端传输
  2. 由于SQL不佳或其他数据源获取缓慢性能命中

我还高,如果你已经使用了RoR的堆栈坚持下去建议。 试图优化和代码在不同的堆栈通常会导致两个较弱的代码 - 让你开发的大脑在一个时间集中在futz的一个池。



Answer 3:

这真的取决于你的usecases和经验的团队/首选项 - 但是,如果你是真正的开放式约不管栈,我们个人的经验是:

  • 斯卡拉+ Scalatra的+码头操作简便,速度非常快。
  • 节点+快递是出奇的接近速度 - 灵活的Javascript代码,但与利益(在我们的例子)。
  • 红宝石是比任何高性能的要少得多,但不得不冷静代码。

斯卡拉是一个胜利者,因为我们的店有很多在JVM的经验。 Hoever,我们希望利用节点更多的未来做了简单性。

我敢肯定,有经验的Ruby家伙能做的改善和调整的东西,但它是不是值得我们学习曲线和一个非首发。



Answer 4:

退房喷雾 -我喜欢它,因为它是轻量级的,精心设计的(模块化的,异步的,理智的API)。 对于Web服务的东西大多数Web框架只是配备了行李太多。



文章来源: High-performance REST API - Which language/stack? [closed]