Unser analytischer Server ist in C++ geschrieben. Es fragt im Grunde zugrunde liegenden Speicher-Engine und gibt eine ziemlich große strukturierte Daten über Sparsamkeit. Eine typische Anfrage dauert ungefähr 0,05 bis 0,6 Sekunden, um sie zu beenden, hängt von der Größe der Anfrage ab.TNonblockingServer, TThreadedServer und TThreadPoolServer, welches passt am besten zu meinem Fall?
Ich habe festgestellt, dass es einige Optionen gibt, in Bezug darauf, welchen Thrift-Server wir im C++ - Code verwenden können, insbesondere TNonblockingServer, TThreadedServer und TThreadPoolServer. Es scheint, als ob TNonblockingServer der Weg ist, da es viel mehr gleichzeitige Anfragen unterstützen kann und immer noch einen Thread-Pool hinter der Szene verwendet, um die Aufgaben zu durchbrechen. Es vermeidet auch die Kosten des Konstruierens/Zerstörens der Fäden.
Facebook-Update auf Sparsamkeit: http://www.facebook.com/note.php?note_id=16787213919
Hier bei Facebook, wir arbeiten an einem voll asynchronen Client und Server für C++. Dieser Server verwendet ereignisgesteuerte E/A wie der aktuelle TNonblockingServer, aber seine Schnittstelle zu der Anwendungscode basiert auf asynchronen Rückrufen. Dies ermöglicht es uns, Server zu schreiben, die Tausende von gleichzeitigen Anfragen (die jeweils Aufrufe an andere Thrift oder Memcache Server erfordern) mit nur wenigen Threads bearbeiten können.
Related Posts über stackover: Large number of simulteneous connections in thrift
aber sagen, dass Sie nicht unbedingt in der Lage sein, tatsächlich schneller arbeiten (Handler noch in einem Thread-Pool ausgeführt werden), aber mehr Kunden werden Sie können sich sofort mit Ihnen verbinden.
Ich frage mich nur, gibt es noch andere Faktoren, die ich hier vermisse? Wie soll ich entscheiden, welches meinen Bedürfnissen am besten entspricht?