我们的分析服务器是用c ++编写的.它基本上查询底层存储引擎,并通过thrift返回相当大的结构化数据.典型的请求大约需要0.05到0.6秒才能完成,具体取决于请求大小.
我注意到我们可以在c ++代码中使用哪些Thrift服务器,特别是TNonblockingServer,TThreadedServer和TThreadPoolServer.看起来像TNonblockingServer是要走的路,因为它可以支持更多的并发请求,并且仍然使用场景后面的线程池来完成任务.它还避免了构造/破坏线程的成本.
Facebook关于节俭的更新:http://www.facebook.com/note.php? note_id = 16787213919
在Facebook,我们正在为C++开发一个完全异步的客户端和服务器.此服务器使用事件驱动的I/O,如当前的TNonblockingServer,但它与应用程序代码的接口都基于异步回调.这将允许我们编写服务器,只需几个线程即可服务数千个同时发出的请求(每个请求都需要调用其他Thrift或Memcache服务器).
stackover上的相关帖子:节俭中的大量同时连接
话虽这么说,你不一定能够更快地完成工作(处理程序仍在线程池中执行),但更多的客户端将能够立即连接到你.
只是想知道我在这里还有其他因素吗?我该如何确定哪一个最适合我的需求?