gRPC ist ein von Google entwickeltes leistungsstarkes, universelles Open-Source-RPC-Framework, mit dem Sie Ihre Dienste mithilfe von Protokollzwischenspeichern definieren können. Sie können gRPC verwenden, um mit Cloud Storage zu interagieren. gRPC nutzt eine direkte Verbindung zwischen Compute Engine- und Cloud Storage-Buckets, ohne Google-Front-Ends (GFEs) zu verwenden.
Die direkte Verwendung von gRPC für eine Verbindung zu Cloud Storage wird nicht unterstützt. Sie können jedoch über die folgenden unterstützten Clients eine Verbindung zu Cloud Storage herstellen:
- Cloud Storage-Connector in Dataproc
- 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.
gRPC in einer Clientbibliothek aktivieren
C++
Hinweise
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 Cloud ausgefü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 Buildsystemkonfiguration für
CMake
undBazel
zu aktualisieren.CMake
Cloud Storage-gRPC-Client-Plug-in zur Laufzeit aktivieren
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
Hinweise
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 andere Google 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 BOM für Google Cloud-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 in Google Cloud ausgeführt wird.
Go
Hinweise
Verwenden Sie die 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.
import (
"context"
"fmt"
"log"
"time"
"cloud.google.com/go/storage"
)
func main() {
ctx := context.Background()
// The project ID and bucket name
projectID := "project-id"
bucketName := "bucket-name"
// Creates a gRPC enabled client.
client, err := storage.NewGRPCClient(ctx)
if err != nil {
log.Fatalf("Failed to create client: %v", err)
}
defer client.Close()
// Creates the new bucket.
ctx, cancel := context.WithTimeout(ctx, time.Second*10)
defer cancel()
if err := client.Bucket(*bucketName).Create(ctx, *projectID, nil); err != nil {
log.Fatalf("Failed to create bucket: %v", err)
}
fmt.Printf("Bucket %v created.\n", *bucketName)
}
Die Go-Clientbibliothek verwendet automatisch eine direkte Verbindung, wenn sie erkennt, dass die Anwendung auf Google Cloud ausgefü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 den Compute Engine-VM-Instanzen 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 Verwendung von gRPC für die Verbindung zu Cloud Storage verbessert die Leseleistung für Analysearbeitslasten, die in Google Cloud ausgeführt werden, nur dann, wenn sich Compute-VMs und Cloud Storage-Buckets in derselben Region befinden. Wir empfehlen nicht, gRPC für Buckets in Multi- und Dualregionen zu verwenden.
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.