我們的分析服務器是用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
話雖這麼說,你也不一定能真正做到提高工作效率(處理 線程池中仍然執行),但更多的客戶會能夠立即連接到你。
只是想知道是否有其他的因素,我在這裏失蹤?我怎樣才能決定哪一個最適合我的需求?