我们的分析服务器是用C++编写的。它基本上查询底层存储引擎,并通过节俭返回相当大的结构化数据。典型的请求将需要大约0.05到0.6秒才能完成取决于请求大小。TNonblockingServer,TThreadedServer和TThreadPoolServer,哪一个最适合我的情况?
我注意到我们可以在C++代码中使用的Thrift服务器有几个选项,特别是TNonblockingServer,TThreadedServer和TThreadPoolServer。看起来像TNonblockingServer是一条路,因为它可以支持更多的并发请求,并且仍然使用场景后面的线程池来处理任务。它也避免了构造/破坏线程的成本。
Facebook的节俭更新:http://www.facebook.com/note.php?note_id=16787213919
在这里,在Facebook上,我们是完全异步客户端和服务器上工作了C++。这 服务器使用像目前TNonblockingServer事件驱动I/O,但其 应用程序代码的接口都是基于异步回调。这将允许我们写一个可以服务于数以千计的并发请求的 服务器(每个需要 打电话给其他储蓄或内存缓存服务器),只有少数线程。
上stackover相关文章:Large number of simulteneous connections in thrift
话虽这么说,你也不一定能真正做到提高工作效率(处理 线程池中仍然执行),但更多的客户会能够立即连接到你。
只是想知道是否有其他的因素,我在这里失踪?我怎样才能决定哪一个最适合我的需求?