gRPC ist ein von Google entwickeltes leistungsstarkes, universelles Open-Source-RPC-Framework, mit dem Sie Ihre Dienste mit Protocol Buffers definieren können. Sie können gRPC verwenden, um mit Cloud Storage zu interagieren. gRPC nutzt direkte Verbindungen zwischen Compute Engine-Instanzen und Cloud Storage-Buckets, wobei Google Front Ends (GFEs) umgangen werden.
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 Schreibanfragen.
Cloud Storage-Clientbibliotheken für C++, Go und Java. Eine Anleitung zum Aktivieren von gRPC für diese Clientbibliotheken finden Sie unter gRPC in Clientbibliothek aktivieren.
Cloud Storage FUSE. Sie können Cloud Storage FUSE als Client verwenden, indem Sie
grpc
im Feldclient-protocol
mit einer Cloud Storage FUSE-Konfigurationsdatei oder der Option--client-protocol
mit der gcsfuse-CLI angeben. Wenn Sie gRPC mit Cloud Storage FUSE verwenden möchten, empfehlen wir Cloud Storage FUSE-Versionen 2.10.0 oder höher.
gRPC in einer Clientbibliothek aktivieren
C++
Hinweise
Prüfen Sie, ob die folgenden Versionen installiert sind:
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.
Achten Sie darauf, dass jeder Compute Engine-Instanz ein Dienstkonto zugewiesen ist, auch wenn das Dienstkonto keine Berechtigungen hat. Dieses Dienstkonto wird verwendet, um die Compute Engine-Instanz im Application Layer Transport Security (ALTS)-Handshake-Prozess darzustellen, und ist für die direkte Verbindung erforderlich.
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 direkte Konnektivität, 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 Konfiguration Ihres Build-Systems für CMake oder Bazel zu aktualisieren.
CMake
Aktivieren Sie das Cloud Storage-gRPC-Client-Plug-in zur Kompilierzeit.
cmake -DGOOGLE_CLOUD_CPP_ENABLE=storage_grpc [other options here]
Ersetzen Sie in Ihrem Code für den
target_link_libraries()
-Befehlgoogle-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
Hinweise
Prüfen Sie, ob die folgenden Versionen installiert sind:
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 Installationsanleitung finden Sie unter Java-Entwicklungsumgebung einrichten.
Achten Sie darauf, dass jeder Compute Engine-Instanz ein Dienstkonto zugewiesen ist, auch wenn das Dienstkonto keine Berechtigungen hat. Dieses Dienstkonto wird verwendet, um die Compute Engine-Instanz im Application Layer Transport Security (ALTS)-Handshake-Prozess darzustellen, und ist für die direkte Verbindung erforderlich.
Projekt für die Verwendung der BOM aktualisieren
Verwenden Sie die in der Google Cloud -BOM 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 Cloud Storage-Clientbibliothek-spezifische BOM.
Maven
Importieren Sie die BOM in den dependencyManagement
-Abschnitt Ihrer pom.xml
-Datei.
Das folgende Beispiel zeigt, wie Sie das BOM importieren und das google-cloud-storage
-Artefakt einfügen.
<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 -Clientbibliotheken-BOM.
Maven
Importieren Sie die BOM in den dependencyManagement
-Abschnitt Ihrer pom.xml
-Datei.
Das folgende Beispiel zeigt, wie Sie die Stückliste importieren und das libraries-bom
-Artefakt einfügen.
<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-zentrierter Builder verwendet. Der gRPC-Java-Client verwendet automatisch eine direkte Verbindung, wenn er erkennt, dass die Anwendung auf Google Cloudausgeführt wird.
Go
Hinweise
Verwenden Sie die Cloud Storage Go-Clientbibliothek in Version 1.46.0 oder höher.
Achten Sie darauf, dass jeder Compute Engine-Instanz ein Dienstkonto zugewiesen ist, auch wenn das Dienstkonto keine Berechtigungen hat. Dieses Dienstkonto wird verwendet, um die Compute Engine-Instanz im Application Layer Transport Security (ALTS)-Handshake-Prozess darzustellen, und ist für die direkte Verbindung erforderlich.
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 die 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 Virtual Private Cloud mit eingeschränkten virtuellen IP-Adressen (VPC Service Controls) 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 Ihrer Compute Engine-Instanz und Ihrem Cloud Storage-Bucket zu ermöglichen.
Fügen Sie dazu Firewallregeln für die Zulassungsliste hinzu, um Traffic an 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 Zulassungslistenregel für 199.36.153.4/30
bei.
Wenn Sie Einschränkungen für Änderungen an Firewallregeln haben und diese nicht aktualisieren können, können Sie den Traffic erzwingen, direkte Verbindungen zu vermeiden, indem Sie storage.googleapis.com
als Cloud Storage-Endpunkt anstelle von google-c2p://storage.googleapis.com
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. Die gRPC-bezogenen Messwerte können Ihnen bei Folgendem helfen:
Leistung von gRPC-Anfragen an Cloud Storage überwachen und optimieren
Probleme beheben und debuggen
Einblick in die Nutzung und das Verhalten Ihrer Anwendung erhalten
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 sie deaktivieren. Eine Anleitung finden Sie unter Clientseitige Messwerte deaktivieren.
Beschränkungen
IPv6-Anfragen können nicht über Legacy-Netzwerke gesendet werden.
Direkte Verbindungen werden nicht unterstützt, wenn die folgenden GKE-Versionen in Clustern verwendet werden, die nur IPv4 unterstützen:
- 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 die Methoden
notifications
,hmacKeys
undserviceAccount
nicht.HTTP-spezifische Optionen für den Client-Konstruktor, z. B. WithHTTPClient, werden für die Go-Clientbibliothek nicht unterstützt.
Fehlerbehebung bei direkten Verbindungen
Informationen dazu, wie Sie die direkte Verbindung prüfen und Probleme beheben, wenn sie nicht verfügbar ist, finden Sie unter Direkte Verbindung.
Nächste Schritte
- Mit dem Cloud Storage-Connector in Dataproc über gRPC verbinden
- gRPC für Apache Beam-E/A-Connector in Dataflow aktivieren