First off, hat jemand einen Leistungsvergleich für Durchsatz/Latenz zwischen einer GRPC Client-Server-Implementierung v/s eine websocket + protobuf Client-Server-Implementierung getan? Oder zumindest etwas Ähnliches.GRPC Server-Antwort-Latenz
Um dieses Ziel zu erreichen, probiere ich das Beispiel JAVA helloworld Grpc Client-Server aus und versuche die Latenz der Antwort mit einem ähnlichen Websocket Client-Server zu vergleichen. Momentan probiere ich dies sowohl mit Client als auch mit Server auf meinem lokalen Rechner aus.
Der Websocket Client-Server hat eine einfache While-Schleife auf der Serverseite. Für den Grpc-Server bemerke ich, dass er ein asynchrones Ausführungsmodell verwendet. Ich vermute, dass es für jede Clientanforderung einen neuen Thread erstellt, was zu zusätzlichen Verarbeitungsgemeinkosten führt. Die Latenzzeit der Web-Socket-Antwort, die ich z. B. gemessen habe, liegt in der Größenordnung von 6-7 ms, und das Beispiel von grpc zeigt eine Latenzzeit von etwa 600-700 ms, was dem Protobuf-Overhead Rechnung trägt.
Um einen ähnlichen Vergleich für grpc zu tun, ist es eine Möglichkeit, die grpc Server synchron zu laufen? Ich möchte in der Lage sein, den Overhead der Thread-Erstellung/-Versendung und anderer solcher interner Kosten, die durch die asynchrone Behandlung eingeführt werden, zu eliminieren.
Ich verstehe, dass es eine protobuf Overhead in grpc beteiligt ist, die nicht da in meinem websocket Client-Server-Beispiel. Dies kann ich jedoch durch die Messung des durch die Protobuf-Verarbeitung eingeführten Overheads erklären.
Auch wenn ich die grpc Server synchron ausgeführt werden kann, kann ich messen mindestens den Faden Dispatch/Asynchron-Overhead-Verarbeitungs?
Ich bin relativ neu zu JAVA, so entschuldigen Sie meine Ignoranz.