>_ DevTrendsde

Sprache

Start

Sprachen

Bereiche

Frontend Backend Mobile DevOps AI / ML GameDev Blockchain Sicherheit
C-plus-plus

Wie gRPC für Ordnung in der Microservice-Kommunikation sorgt

Stellen Sie sich vor, Sie bauen ein komplexes System, in dem ein Dutzend Dienste in verschiedenen Sprachen ständig Daten austauschen müssen. Normalerweise greifen wir zu bewährtem REST, schreiben eine Menge JSON-Schemata und kämpfen dann mit Typisierung und Performance. Irgendwann wird Ihnen klar: CPU-Ressourcen für das Packen und Entpacken von Text aufzuwenden ist ein zweifelhafter Spaß. Genau hier kommt gRPC ins Spiel.

Was ist das eigentlich

Kurz gesagt, gRPC ist ein modernes Framework für Remote Procedure Calls. Es wurde von Google entwickelt, um das Problem der effizienten Kommunikation zwischen Tausenden interner Dienste zu lösen. Das Hauptmerkmal ist, dass der Aufruf einer Funktion auf einem anderen Server für Ihren Code fast genauso aussieht wie der Aufruf einer lokalen Methode.

Das Projekt befindet sich im grpc/grpc Repository und kombiniert Implementierungen für C++, Python, Ruby und andere Sprachen, die um einen gemeinsamen C-Kern herum aufgebaut sind.

Warum Sie umsteigen sollten

Als ich gRPC zum ersten Mal in einem echten Projekt ausprobierte, war das, was mich am meisten beeindruckte, nicht die Geschwindigkeit, sondern der strikte Vertrag.

Vertrag an erster Stelle

Bei gRPC beginnen Sie nicht mit Code, sondern mit einer Schnittstellenbeschreibung in .proto-Dateien. Sie beschreiben Datenstrukturen und Methoden klar und deutlich. Aus dieser Datei generiert ein spezieller Compiler Client- und Server-Code in der gewünschten Sprache. Keine Diskussionen mehr darüber, ob ein Datum als String oder Zahl übergeben werden soll — alles ist im Schema festgelegt.

Geschwindigkeit und binäres Format

Anstatt sperriges JSON über das Netzwerk zu schicken, verwendet gRPC Protocol Buffers (Protobuf). Dies ist ein binäres Format, das viel kompakter ist und schneller geparst wird. Bei mobilen Anwendungen oder hochbelasteten Backends wird der Unterschied im Datenverkehr und CPU-Verbrauch ziemlich schnell spürbar.

Streaming serienmäßig

REST ist immer „Anfrage-Antwort". gRPC ermöglicht Ihnen tolle Dinge:

  • Client-Streaming (Senden eines Datenstroms an den Server).
  • Server-Streaming (Server sendet einen Strom von Updates).
  • Bidirektionales Streaming (Vollduplex).

Das ist perfekt für Chats, Überwachungssysteme oder die Übertragung großer Dateien in Stücken.

Wie es unter der Haube funktioniert

Das Repository basiert auf src/core — einer gemeinsamen C-Bibliothek. Wrapper für bestimmte Sprachen werden darum herum gewickelt. Interessanterweise sind einige Implementierungen, wie für Go oder Java, in separaten Repositories untergebracht, um besser in die Ökosysteme dieser Sprachen zu passen.

gRPC arbeitet auf Basis von HTTP/2. Dies ermöglicht Multiplexing (viele Anfragen in einer Verbindung) und Header-Komprimierung. Wenn Sie es gewohnt sind, Anfragen über curl zu debuggen, müssen Sie hier ein wenig umlernen, da die Daten im Kanal ohne spezielle Werkzeuge für Menschen nicht lesbar sind.

Wo man das einsetzt

Ich würde nicht empfehlen, gRPC überall einzusetzen. Wenn Sie zum Beispiel eine öffentliche API für Drittanbieter-Entwickler erstellen, ist REST wegen seiner Einfachheit immer noch der De-facto-Standard.

Aber gRPC ist in zwei Fällen unverzichtbar:

  1. Interne Microservice-Küche. Wenn es viele Dienste gibt, die ständig miteinander kommunizieren. Typisierung und Code-Generierung sparen Wochen der Entwicklung.
  2. Polyglotte Architektur. Wenn Sie Analytik in Python, Haupt-Backend in Go und speicherkritische Teile in C++ haben, wird gRPC sie nahtlos verbinden.

Wo man anfängt zu lernen

Das Repository enthält einen ausgezeichneten examples-Ordner. Es enthält Beispiele vom klassischen „Hello World

Ähnliche Projekte