首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Twitter-Finagle的并发请求限制

Twitter-Finagle的并发请求限制
EN

Stack Overflow用户
提问于 2015-01-12 14:19:18
回答 1查看 877关注 0票数 1

我使用Finagle创建了一个节俭服务器,如下所示

代码语言:javascript
复制
val server = Thrift.serveIface(bindAddr(), new MyService[Future] {
  def myRPCFuction() {}
})

但是,我发现并发请求的最大数量是5(为什么是5?当大于5时,服务器将忽略多余的。)我仔细查看了Finagle的文档(http://twitter.github.io/finagle/guide/Protocols.html#thrift-and-scrooge),但没有找到配置最大请求限制的提示。如何配置Finagle的最大并发请求数?谢谢

EN

回答 1

Stack Overflow用户

发布于 2015-01-13 17:57:39

我自己解决了这个问题,我在这里分享它,以帮助其他可能遇到同样情况的人。因为我以前是thrift用户,所以在Thrift中,当您从RPC函数返回时,将值返回给调用client。而在Finagle中,只有当您使用Future.value()时,才会将值返回给client。当使用Finagle时,你应该完全使用异步的方式,也就是说你最好不要在RPC函数中同步地休眠或做一些其他的RPC。

代码语言:javascript
复制
/*   THIS is  BAD */
val server = Thrift.serveIface(bindAddr(), new MyService[Future] {
  def myRPCFuction() {
      val rpcFuture = rpcClient.callOtherRpc() // call other rpc which return a future
      val result = Await.result(rpcFuture, TwitterDuration(rpcTimeoutSec()*1000, MILLISECONDS))
      Future.value(result)
  }
})
/* This is  GOOD */
val server = Thrift.serveIface(bindAddr(), new MyService[Future] {
  def myRPCFuction() {
      val rpcFuture = rpcClient.callOtherRpc() // call other rpc which return a future
      rpcFuture onSuccess { // do you job when success (you can return to client using Future.value) }
      rpcFuture onFailure { // do your job when fail   }
  }
})

然后,可以获得令人满意的并发性。希望对其他有同样问题的人有所帮助。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27896356

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档