gRPC ist ein von Google entwickeltes leistungsstarkes, universelles Open-Source-RPC-Framework, mit dem Sie Ihre Dienste mithilfe von Protokoll-Buffers definieren können. Sie können gRPC verwenden, um mit Cloud Storage zu interagieren. gRPC nutzt eine direkte Verbindung zwischen der Compute Engine-Instanz und Cloud Storage-Buckets, ohne Google-Front-Ends (GFEs) zu verwenden.
Sie können über die folgenden unterstützten Clients eine Verbindung zu Cloud Storage über gRPC herstellen:
Apache Beam-E/A-Connector in Dataflow für Lese- und Schreib-Anfragen.
Cloud Storage-Clientbibliotheken für C++, Go und Java Eine Anleitung zum Aktivieren von gRPC für diese Clientbibliotheken finden Sie unter gRPC in der Clientbibliothek aktivieren.
Cloud Storage FUSE. Wenn Sie Cloud Storage FUSE als Client verwenden möchten, geben Sie im Feld
client-protocol
mithilfe einer Cloud Storage FUSE-Konfigurationsdatei den Wertgrpc
oder mithilfe der gcsfuse-Befehlszeile das Flag--client-protocol
an.
Wenn Sie gRPC für die Verbindung zu Cloud Storage verwenden, wird die Leseleistung für Analysearbeitslasten voraussichtlich nur dann verbessert, wenn sich die Compute Engine-Instanz und die Cloud Storage-Buckets in derselben Region befinden. Google Cloud Wir empfehlen nicht, gRPC für Buckets in Multi- und Dualregionen zu verwenden.
gRPC in einer Clientbibliothek aktivieren
C++
Hinweis
Die folgenden Versionen müssen installiert sein:
gRPC Version 1.65.1 oder höher
C++-Clientbibliothek, Version 2.30.0 oder höher
C++ Version 14 oder höher
Eine Installationsanleitung finden Sie unter C++-Entwicklungsumgebung einrichten.
C++-Clientbibliothek konfigurieren
So erstellen Sie einen gRPC-Client mit
gcs::MakeGrpcClient()
:namespace gcs = google::cloud::storage; void App() { auto client = gcs::MakeGrpcClient(); // application code }
Die C++-Clientbibliothek verwendet automatisch eine direkte Verbindung, wenn sie erkennt, dass die Anwendung auf Google Cloudausgeführt wird.
Wenn Sie die C++-Clientbibliothek für die Verwendung von gRPC konfigurieren möchten, aktivieren Sie den Cloud Storage gRPC-Client, um die Build-Systemkonfiguration für CMake oder Bazel zu aktualisieren.
CMake
Aktivieren Sie das Cloud Storage-gRPC-Client-Plug-in zur Kompilierungszeit.
cmake -DGOOGLE_CLOUD_CPP_ENABLE=storage_grpc [other options here]
Ersetzen Sie in Ihrer Codebasis im Befehl
target_link_libraries()
google-cloud-cpp::storage
durchgoogle-cloud-cpp::storage_grpc
.Im Schnellstartprogramm für gRPC wird beispielsweise der folgende Code verwendet:
add_executable(quickstart_grpc quickstart_grpc.cc) target_link_libraries(quickstart_grpc google-cloud-cpp::storage_grpc)
Bazel
Ersetzen Sie die Abhängigkeiten von
@google_cloud_cpp//:storage
durch@google_cloud_cpp//:storage_grpc
.Im Schnellstartprogramm für gRPC wird beispielsweise der folgende Code verwendet:
cc_binary( name = "quickstart", srcs = [ "quickstart.cc", ], deps = [ "@com_github_googleapis_google_cloud_cpp//:storage_grpc", ], )
Java
Hinweis
Die folgenden Versionen müssen installiert sein:
Java-Clientbibliotheken:
com.google.cloud:google-cloud-storage:2.43.1
oder höher.com.google.cloud:libraries-bom:26.48
oder höher.
Java 8 oder höher
Eine Anleitung zur Installation finden Sie unter Java-Entwicklungsumgebung einrichten.
Projekt für die Verwendung der BOM aktualisieren
Verwenden Sie die in der Google Cloud BOM (Bill of Materials) angegebenen Versionen, damit Ihre Projekte kompatible Versionen von Google Cloud -Clientbibliotheken haben. Sie haben folgende Möglichkeiten, Ihr Projekt für die Verwendung der BOM zu aktualisieren:
Eigenständiger Cloud-Speicher
Wenn Sie die Cloud Storage-Clientbibliothek unabhängig (ohne andereGoogle Cloud -Bibliotheken) verwenden, verwenden Sie die BOM, die speziell für die Cloud Storage-Clientbibliothek gilt.
Maven
Importieren Sie die BOM in den dependencyManagement
-Abschnitt Ihrer pom.xml
-Datei.
Das folgende Beispiel zeigt, wie Sie die BOM importieren und das google-cloud-storage
-Artefakt einschließen.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage-bom</artifactId>
<version>2.43.1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
</dependencies>
Gradle
Fügen Sie eine Plattformabhängigkeit von com.google.cloud:google-cloud-storage-bom
hinzu:
implementation platform('com.google.cloud:google-cloud-storage-bom:2.43.1')
implementation 'com.google.cloud:google-cloud-storage'
Cloud Storage mit anderen Google Cloud Bibliotheken
Wenn Sie die Cloud Storage-Clientbibliothek zusammen mit anderen Google Cloud Bibliotheken verwenden, verwenden Sie die Google Cloud BOM für Clientbibliotheken.
Maven
Importieren Sie die BOM in den dependencyManagement
-Abschnitt Ihrer pom.xml
-Datei.
Im folgenden Beispiel wird gezeigt, wie Sie die BOM importieren und das libraries-bom
-Artefakt einschließen.
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>libraries-bom</artifactId>
<version>26.48.0</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>com.google.cloud</groupId>
<artifactId>google-cloud-storage</artifactId>
</dependency>
</dependencies>
Gradle
Fügen Sie eine Plattformabhängigkeit von com.google.cloud:libraries-bom
hinzu:
implementation platform('com.google.cloud:libraries-bom:26.48.0')
implementation 'com.google.cloud:google-cloud-storage'
gRPC-Client erstellen
Im folgenden Beispiel wird ein gRPC-orientierter Builder verwendet. Der gRPC Java-Client verwendet automatisch eine direkte Verbindung, wenn erkannt wird, dass die Anwendung auf Google Cloudausgeführt wird.
Go
Hinweis
Verwenden Sie Version 1.46.0 oder höher der Cloud Storage Go-Clientbibliothek.
gRPC-Client erstellen
Wenn Sie den Client verwenden möchten, müssen Sie in Ihrer Anwendung den Konstruktor NewGRPCClient
anstelle von NewClient
aufrufen.
Die Go-Clientbibliothek verwendet automatisch eine direkte Verbindung, wenn sie erkennt, dass die Anwendung auf Google Cloudausgeführt wird.
Informationen zur Verwendung eines gRPC-Clients finden Sie unter gRPC API.
VPC Service Controls konfigurieren
Wenn Sie eine Virtual Private Cloud mit eingeschränkten virtuellen IP-Adressen (VPC-Dienststeuerungen) verwenden, um die Sicherheit Ihres Netzwerks zu erhöhen, müssen Sie Ihre Firewallregeln aktualisieren, um eine direkte Verbindung für eine optimale Leistung zwischen der Compute Engine-Instanz und Cloud Storage zu ermöglichen.
Fügen Sie dazu Firewallregeln für die Zulassungsliste hinzu, um Traffic auf allen Ports für die folgenden CIDR-Blöcke zuzulassen:
- Für IPv4-Traffic:
34.126.0.0/18
- Für IPv6-Traffic:
2001:4860:8040::/42
Behalten Sie zusätzlich zu den oben genannten Regeln die vorhandene Zulassungsliste für 199.36.153.4/30
bei.
Wenn Sie Einschränkungen bei der Änderung von Firewallregeln haben und diese nicht aktualisieren können, können Sie den Traffic dazu zwingen, eine direkte Verbindung zu vermeiden, indem Sie storage.googleapis.com
anstelle von google-c2p://storage.googleapis.com
als Cloud Storage-Endpunkt verwenden.
Verwenden Sie beispielsweise für C++ .set<google::cloud::EndpointOption>(storage.googleapis.com)
anstelle von google-c2p:///storage.googleapis.com
.
Beobachtbarkeit für gRPC-bezogene Anfragen aktivieren
Sie können Cloud Storage-Clientbibliotheken so konfigurieren, dass gRPC-bezogene Messwerte in Cloud Monitoring generiert werden. Mit den gRPC-bezogenen Messwerten können Sie Folgendes tun:
Leistung von gRPC-Anfragen an Cloud Storage überwachen und optimieren
Probleme beheben
Sie erhalten Informationen zur Nutzung und zum Verhalten Ihrer Anwendung.
Informationen zum Generieren von gRPC-bezogenen Messwerten finden Sie unter Clientseitige Messwerte verwenden.
Wenn die Erfassung von Messwerten für Ihren Anwendungsfall nicht erforderlich ist, können Sie die Erfassung deaktivieren. Eine Anleitung finden Sie unter Clientseitige Messwerte deaktivieren.
Beschränkungen
IPv6-Anfragen können nicht über Legacy-Netzwerke gesendet werden.
Die direkte Verbindung wird bei Verwendung der folgenden GKE-Versionen in reinen IPv4-Clustern nicht unterstützt:
- 1.28, 1.28.0-gke.100 oder höher bis 1.28.5-gke.1199000
- 1.27, 1.27.4-gke.1900 oder höher
- 1.26, 1.26.10-gke.1238000 oder höher
- 1.25, 1.25.15-gke.1045000 oder höher
gRPC unterstützt keine Benachrichtigungen, hmacKeys und serviceAccount-Methoden.
HTTP-spezifische Optionen für den Client-Konstruktor, z. B. WithHTTPClient, werden von der Go-Clientbibliothek nicht unterstützt.
Nächste Schritte
- Mit gRPC eine Verbindung zum Cloud Storage-Connector in Dataproc herstellen
- Aktivieren Sie gRPC für den Apache Beam-E/A-Connector in Dataflow.