Anwendungen mit gRPC implementieren
Mit Code Enginekönnen Sie Ihre Anwendungen so konfigurieren, dass sie als gRPC-Server ausgeführt werden, um Clientaufrufe zu verarbeiten, indem Sie die gRPC-Funktionen nutzen.
gRPC ist ein modernes Open-Source-RPC-Framework (Remote Procedure Call) mit hoher Leistung, das Services in und zwischen Rechenzentren verbinden kann. Bietet effiziente Binärserialisierung, bidirektionales Streaming, Lastausgleich für Client und Server, Traceerstellung, Statusprüfung und Authentifizierung. Weitere Informationen finden Sie in der Dokumentation zugRPC.
Vorteile der Verwendung von gRPC
gRPC bietet mehrere Vorteile, um die Kommunikation zwischen Clients und Servern zu erleichtern. Ein grundlegender Aspekt von gRPC ist die Definition einer klaren Schnittstelle, die alle Methoden und Parameter kapselt, die für einen fernen Aufruf verfügbar sind. Auf der Serverseite wird diese Schnittstelle implementiert, um Clientanforderungen effektiv zu verarbeiten und zu beantworten.
Dieser Ansatz für die Arbeit mit gRPC mit Ihren Code Engine-Anwendungen bietet Vorteile.
-
Interoperabilität- gRPC-Clients und -Server können in verschiedenen Umgebungen ausgeführt werden und miteinander kommunizieren. Sie können Ihre Server beispielsweise mit der Sprache Go definieren, während Ihre Clients in Javadefiniert sind.
-
Serialisierung- gRPC verwendet Protokollpuffer für die Nachrichtenserialisierung, was hinsichtlich Größe und Geschwindigkeit effizienter ist als die Verwendung von JSON in HTTP-APIs.
-
Streaming- gRPC unterstützt bidirektionales Streaming, sodass Clients und Server Nachrichten gleichzeitig über eine einzige Verbindung senden und empfangen.
-
Fehlererkennung- gRPC erzwingt einen stark typisierten Vertrag zwischen Client und Server über die Protokollpuffer (
.proto-Dateien). Dieser Vertrag stellt sicher, dass der Client und der Server sich auf Schnittstellen und Datenstruktur einigen, was eine bessere Codegenerierung, Validierung und Fehlerbehandlung ermöglicht. -
Sicherheit- gRPC unterstützt verschiedene Authentifizierungs-und Verschlüsselungsverfahren, einschließlich gegenseitige TLS, die eine sichere Kommunikation zwischen Client und Server ermöglicht.
Code Engine Anwendungen für die Verwendung von gRPC konfigurieren
gRPC wird für Code Engine-Anwendungen auf Projektebene unterstützt. Dies bedeutet, dass Ihre Code Engine gRPC-Serveranwendung nur Datenverkehr für Clients bereitstellen kann, die in demselben Projekt ausgeführt werden.
Sie müssen die Befehlszeilenschnittstelle Code Engine verwenden, um eine Code Engine gRPC-Anwendung zu konfigurieren.
Vorbereitende Schritte
Von Code Engine:
- Konfigurieren Sie die Umgebung der Code Engine-Befehlszeilenschnittstelle.
- Erstellen Sie ein Projekt.
-
Erstellen und implementieren Sie eine Anwendung mit dem Befehl
ibmcloud ce application create. Um anzugeben, dass diese Anwendung gRPCunterstützt, das HTTP/2 als Transportmodus verwendet, müssen Sie die Option--portmit dem Format[NAME:]PORTangeben. Beispiel:--port h2c:8080. Wenn für[NAME:]der Werth2cfestgelegt wurde, wird vom Port unverschlüsseltes HTTP/2 verwendet. Standardmäßig geht Code Engine davon aus, dass Apps an Port8080für eingehende Verbindungen empfangsbereit sind.Verwenden Sie im folgenden Beispiel
myapp-grpcserverals Namen der Serveranwendung und geben Sieicr.io/codeengine/grpc-serverals Referenzbild an.ibmcloud ce application create --name myapp-grpcserver --port h2c:8080 --min-scale 1 --image icr.io/codeengine/grpc-server -
Führen Sie den Befehl
application getaus, um die Details zur App anzuzeigen.ibmcloud ce application get --name myapp-grpcserverBeispielausgabe
[...] OK Name: myapp-grpcserver ID: abcdefgh-abcd-abcd-abcd-1a2b3c4d5e6f Project Name: myproject [...] Port: h2c:8080 [...]
Nachdem Ihre Server-App für die Verwendung von gRPCerstellt und implementiert wurde, müssen Sie eine Clientanwendung in demselben Projekt implementieren, um mit gRPCauf den Server zuzugreifen. Weitere Informationen zum Mustercode Code Engine
für die Implementierung eines gRPC-Servers und einer Clientanwendung finden Sie unter Code Engine grpc sample.
Code Engine-Beispielimages, die aus dem IBM Cloud Code Engine-Beispielrepository unter GitHub erstellt wurden, sind in IBM Cloud® Container Registry im öffentlichen
Namensbereich icr.io/codeengine verfügbar.