Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby-使用EventMachine/Celloid的并发多异步非阻塞HTTP IO_Ruby_Nonblocking_Eventmachine_Puma_Celluloid - Fatal编程技术网

Ruby-使用EventMachine/Celloid的并发多异步非阻塞HTTP IO

Ruby-使用EventMachine/Celloid的并发多异步非阻塞HTTP IO,ruby,nonblocking,eventmachine,puma,celluloid,Ruby,Nonblocking,Eventmachine,Puma,Celluloid,我正在使用一个服务器来提供一个服务,该服务聚合来自14个HTTP客户端请求的响应。我在请求之间有一些依赖关系,但它们可以在某种程度上并行。每个请求可能需要1.8秒,而ruby/cpu时间仅为50毫秒(97.3%IO) 目前,我正在使用自动缩放的heroku dynos,它有两个进程,每个进程有25个线程。使用MRI/CRuby并假设jRuby将大大提高可伸缩性,因为我同意 Puma在处理并发请求方面做得很好,而其他请求被IO阻止。但我仍然需要并计划以非阻塞方式并行HTTP客户端请求 在对我的场景

我正在使用一个服务器来提供一个服务,该服务聚合来自14个HTTP客户端请求的响应。我在请求之间有一些依赖关系,但它们可以在某种程度上并行。每个请求可能需要1.8秒,而ruby/cpu时间仅为50毫秒(97.3%IO)

目前,我正在使用自动缩放的heroku dynos,它有两个进程,每个进程有25个线程。使用MRI/CRuby并假设jRuby将大大提高可伸缩性,因为我同意

Puma在处理并发请求方面做得很好,而其他请求被IO阻止。但我仍然需要并计划以非阻塞方式并行HTTP客户端请求

在对我的场景进行基准测试之前。我希望对标准的ruby选项进行基准测试,如或,或其他建议的选项。为了真正了解jubilee/vert.x在多大程度上优于使用事件机的puma。看

我的问题是:

  • 哪种选择对彪马最有效
  • 哪种替代方案的设计方式将 工作最好的彪马的事件循环,并承诺使彪马 处理并发请求(例如)时 “非阻塞性等待”等待响应
  • 为了实现这一点,我是否应该使用EventMachine/赛璐珞的特定配置或用法
  • 总的来说,如果您对这种情况有任何想法,我们将不胜感激

  • 你试过pure
    Reel
    ?我读过,对这里的基准测试结果感到失望-,在看到彪马在行动中的表现如何后,我似乎会将精力集中在与jRuby和EM或jubilee合作的彪马上。他们似乎更有希望。然而,jubilee有一些问题,通常ruby中的vert.x不是很多人在web上尝试过的,这是一个明显的缺点。您的信息似乎有偏差,但祝您好运。我见过一些公司同时使用Reel和Puma,以及Rubinius和jRuby。Ruby有大量的HTTP/S暴露,它不是主流。@digital极端主义者,你试图读得太快了。当然是红宝石!我的意思是,带有Ruby的vert.x不够常见,并且存在一些问题。试着告诉我,如果你在stackoverflow或任何其他论坛中看到任何参考资料,那里什么都没有,只有vertx.io网站ti self。请收回你的评论。