2017-01-26 1 views
2

HTTP/2 ist Binär, sowie Protobuf.Gibt Protobuf Größe und Geschwindigkeit im Vergleich zu HTTP/2?

Wenn ich HTTP/2 auf meinem Server verwende, muss ich dann noch Protobuf verwenden, wenn ich es verwende, um die Größe von Nachrichten zu reduzieren, oder wird JSON gziped und über HTTP/2 vergleichsweise gleich gesendet?

JSON scheint besser lesbar und einfacher zu debuggen sowie benötigt keine zusätzliche Client-Bibliothek.

Antwort

4

Diese sind orthogonal. HTTP/2 ist ein binäres Framing/Multiplexing-Protokoll auf Sockeln. Es kann mehrere parallele Anforderungen/Antworten in einem einzelnen TCP-Stream verarbeiten, wobei HTTP/1 dies nicht kann. Vom Standpunkt der Anwendung aus bieten beide jedoch einen binären Stream in der Anforderungs- und Antwortrichtung, in den Sie entweder Text oder JSON- oder kodierte codierte Daten oder etwas anderes, das Sie wünschen, einfügen können.

Wenn die Verwendung von Protobuf auf Anwendungsebene optimaler ist (wegen Platzeinsparungen, schnellerer Encodierung der Codierung usw.), wird es sowohl auf HTTP/1.1 als auch auf HTTP/2 besser sein. Wenn JSON für die Anwendung gut genug ist, ist es die richtige Wahl für HTTP/1.1 und HTTP/2.

HTTP/2 ist möglicherweise schneller als ein zugrunde liegender Transport für die Bereitstellung der binären Anforderungs- und Antwortdaten im Vergleich zu HTTP/1.1 oder zum Initiieren der Anforderung, aber das hängt vom Daten- und Verwendungsszenario ab.

+2

Beachten Sie auch, dass http://grpc.io - Googles RPC-System - auf Protokollpuffer und HTTP/2 basiert, was zeigt, dass sie gut zusammenpassen. –

+0

Das stimmt. Jedoch ist gRPC sogar ein bisschen speziell, da es einige Funktionen verwendet, die nicht einmal von vielen HTTP/1.1-Bibliotheken, z. Senden und Empfangen von nachlaufenden Headern. Es hat daher einige strengere Anforderungen an die zugrunde liegende HTTP-Implementierung als die meisten anderen HTTP-basierten Systeme. – Matthias247

Verwandte Themen