Ich versuche Protobuf und gRPC zu verstehen und wie ich beide verwenden kann. Können Sie mir helfen, Folgendes zu verstehen:
- In Anbetracht des OSI-Modells, wo befindet sich beispielsweise Protobuf auf Schicht 4?
- Wenn Sie eine Nachrichtenübertragung durchdenken, wie ist der "Fluss", was macht gRPC, was protobuf vermisst?
- Wenn der Absender protobuf verwendet, kann der Server gRPC verwenden oder fügt gRPC etwas hinzu, das nur ein gRPC-Client liefern kann?
- Wenn gRPC eine synchrone und asynchrone Kommunikation ermöglichen kann, ist Protobuf nur für das Marshalling gedacht und hat daher nichts mit dem Status zu tun - wahr oder falsch?
- Kann ich gRPC in einer Frontend-Anwendung verwenden, die anstelle von REST oder GraphQL kommuniziert?
Ich weiß bereits - oder gehe davon aus -:
- Binäres Protokoll für den Datenaustausch
- Entworfen von Google
- Verwendet die generierte "Struct" -ähnliche Beschreibung auf Client und Server, um die Marshall-Nachricht zu entfernen
- Verwendet protobuf (v3)
- Wieder von Google
- Framework für RPC-Aufrufe
- Verwendet auch HTTP / 2
- Synchrone und asynchrone Kommunikation möglich
Ich gehe wieder davon aus, dass es eine einfache Frage für jemanden ist, der die Technologie bereits nutzt. Ich würde Ihnen trotzdem danken, geduldig mit mir zu sein und mir zu helfen. Ich wäre auch sehr dankbar für jeden tiefen Einblick in die Technologien.
HTTP/2
) verwendet, aber es erledigt definitiv die Aufgaben dieser Schichten.Tatsächlich sind gRPC und Protobuf zwei völlig verschiedene Dinge. Lassen Sie mich vereinfachen:
gRPC hat zwei Seiten: eine Serverseite und eine Clientseite, die einen Server wählen können. Der Server macht RPCs verfügbar (dh Funktionen, die Sie remote aufrufen können). Und Sie haben dort viele Möglichkeiten: Sie können die Kommunikation sichern (mithilfe von TLS), eine Authentifizierungsschicht hinzufügen (mithilfe von Interceptors), ...
Sie können protobuf in jedem Programm verwenden, für das kein Client / Server erforderlich ist. Wenn Sie Daten austauschen müssen und möchten, dass sie stark typisiert werden, ist protobuf eine gute Option (schnell und zuverlässig).
Davon abgesehen können Sie beides kombinieren, um ein nettes Client / Server-System zu erstellen: gRPC ist Ihr Client / Server-Code und protobuf Ihr Datenprotokoll.
PS: Ich habe dieses Papier geschrieben, um zu zeigen, wie man mit Go Schritt für Schritt einen Client / Server mit gRPC und Protobuf erstellen kann.
quelle
grpc ist ein von Google erstelltes Framework und wird in Produktionsprojekten von Google selbst verwendet. #HyperledgerFabric wird mit grpc erstellt. Es gibt viele OpenSource-Anwendungen, die mit grpc erstellt wurden
Protobuff ist eine Datendarstellung wie json. Dies ist auch von Google. Tatsächlich werden in ihren Produktionsprojekten einige Tausend Protodateien generiert
grpc
Protobuff
quelle