gRPC è un framework RPC universale open source ad alte prestazioni sviluppato da Google che puoi utilizzare per definire i tuoi servizi utilizzando Protocol Buffers. Puoi e usare gRPC per interagire con Cloud Storage. gRPC utilizza le reti pubblicitarie la connettività tra Compute Engine e i bucket Cloud Storage, eludere i Google Front End (GFE).
Sebbene l'utilizzo diretto di gRPC per connettersi a Cloud Storage non sia supportato, puoi collegarti a Cloud Storage utilizzando gRPC tramite i seguenti client supportati:
- Connettore Cloud Storage su Dataproc.
- Connettore I/O Apache Beam su Dataflow per le richieste di lettura e scrittura.
- Librerie client di Cloud Storage per C++, Go e Java. Per istruzioni su come abilitare gRPC per queste librerie client, vedi Abilitare gRPC nella libreria client.
Abilita gRPC su una libreria client
C++
Prima di iniziare
Assicurati di aver installato le seguenti versioni:
- gRPC versione 1.65.1 o successive.
- Libreria client C++ versione v2.30.0 o successiva.
- C++ versione 14 o successive.
Per le istruzioni di installazione, vedi Configurazione di un ambiente di sviluppo C++.
configura la libreria client C++
Crea un client gRPC utilizzando
gcs::MakeGrpcClient()
:namespace gcs = google::cloud::storage; void App() { auto client = gcs::MakeGrpcClient(); // application code }
La libreria client C++ utilizza automaticamente la connettività diretta quando rileva che l'applicazione è in esecuzione su Google Cloud.
Per configurare la libreria client C++ in modo da utilizzare gRPC, abilita il client gRPC di Cloud Storage per aggiornare la configurazione del sistema di compilazione per
CMake
eBazel
.CMake
Abilita il plug-in client gRPC di Cloud Storage in fase di compilazione
cmake -DGOOGLE_CLOUD_CPP_ENABLE=storage_grpc [other options here]
Nel codebase, per il comando
target_link_libraries()
sostituiscigoogle-cloud-cpp::storage
congoogle-cloud-cpp::storage_grpc
Ad esempio, il programma di avvio rapido per gRPC utilizza quanto segue codice:
add_executable(quickstart_grpc quickstart_grpc.cc) target_link_libraries(quickstart_grpc google-cloud-cpp::storage_grpc)
Bazel
Sostituisci le dipendenze da
@google_cloud_cpp//:storage
a@google_cloud_cpp//:storage_grpc
.Ad esempio, il programma di avvio rapido per gRPC utilizza il seguente codice:
cc_binary( name = "quickstart", srcs = [ "quickstart.cc", ], deps = [ "@com_github_googleapis_google_cloud_cpp//:storage_grpc", ], )
Java
Prima di iniziare
Assicurati di aver installato le seguenti versioni:
Librerie client Java:
com.google.cloud:google-cloud-storage:2.43.1
o versioni successive.com.google.cloud:libraries-bom:26.48
o versioni successive.
Java 8 o versioni successive
Per le istruzioni di installazione, vedi Configurazione di un ambiente di sviluppo Java.
Aggiorna il progetto per utilizzare il BOM
Per assicurarti che i tuoi progetti dispongano di versioni compatibili delle librerie client Google Cloud, utilizza le versioni specificate nel Bill of Materials (BOM) delle librerie Google Cloud. A aggiorna il progetto per utilizzare il BOM, usa uno dei seguenti metodi:
Cloud Storage autonomo
Se utilizzi la libreria client di Cloud Storage in modo indipendente (senza altri librerie Google Cloud), utilizza le librerie client specifiche della Cloud Storage DISTINTA BASE.
Maven
Importa la BOM nella sezione dependencyManagement
del file pom.xml
.
L'esempio seguente mostra come importare la BOM e includere l'elemento google-cloud-storage
.
<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
Aggiungi una dipendenza dalla piattaforma su com.google.cloud:google-cloud-storage-bom
:
implementation platform('com.google.cloud:google-cloud-storage-bom:2.43.1')
implementation 'com.google.cloud:google-cloud-storage'
Cloud Storage con altre librerie Google Cloud
Se utilizzi la libreria client di Cloud Storage insieme ad altre librerie Google Cloud, utilizza il file BOM delle librerie client Google Cloud.
Maven
Importa il BOM nella sezione dependencyManagement
del file pom.xml
.
L'esempio seguente mostra come importare il BOM e includere il
libraries-bom
artefatto.
<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
Aggiungi una dipendenza dalla piattaforma su com.google.cloud:libraries-bom
:
implementation platform('com.google.cloud:libraries-bom:26.48.0')
implementation 'com.google.cloud:google-cloud-storage'
Crea un client gRPC
L'esempio seguente utilizza un generatore incentrato su gRPC. Il client Java gRPC utilizza automaticamente la connettività diretta quando rileva che l'applicazione è in esecuzione su Google Cloud.
Vai
Prima di iniziare
Assicurati di utilizzare la libreria client Go di Cloud Storage versione 1.44 o successive.
Crea un client gRPC
Per utilizzare il client, devi chiamare il costruttore NewGRPCClient
in
la tua applicazione anziché NewClient
.
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)
}
La libreria client Go utilizza automaticamente la connettività diretta quando rileva che l'applicazione è in esecuzione su Google Cloud.
Per informazioni su come utilizzare un client gRPC, consulta la pagina relativa all'API gRPC.
Configurazione dei Controlli di servizio VPC
Se utilizzi Virtual Private Cloud con indirizzi IP virtuali limitati ( VPC Service Controls) per migliorare la sicurezza della tua rete, devi aggiornare le regole del firewall per attivare la connettività diretta per prestazioni ottimali tra le istanze delle macchine virtuali Compute Engine e Cloud Storage.
A tale scopo, aggiungi regole firewall della lista consentita per consentire il traffico su tutte le porte per i seguenti blocchi CIDR:
- Per il traffico IPv4:
34.126.0.0/18
- Per il traffico IPv6:
2001:4860:8040::/42
Oltre alle regole precedenti, mantieni la regola della lista consentita esistente per
199.36.153.4/30
.
Se esistono limitazioni relative alle modifiche alle regole del firewall e non puoi eseguire l'aggiornamento
quindi puoi forzare il traffico a evitare la connettività diretta utilizzando
storage.googleapis.com
come Cloud Storage
anziché google-c2p://storage.googleapis.com
.
Ad esempio, per l'uso C++, .set<google::cloud::EndpointOption>(storage.googleapis.com)
anziché google-c2p:///storage.googleapis.com
.
Attivare l'osservabilità per le richieste correlate a gRPC
Puoi configurare le librerie client di Cloud Storage per generare metriche relative a gRPC in Cloud Monitoring. Le metriche relative a gRPC possono aiutarti a:
Monitora e ottimizza le prestazioni delle richieste gRPC a Cloud Storage.
Risolvere i problemi ed eseguirne il debug.
Ottieni insight sull'utilizzo e sul comportamento della tua applicazione.
Per informazioni su come generare metriche relative a gRPC, consulta Utilizzare le metriche lato client.
Se la raccolta delle metriche non è necessaria per il tuo caso d'uso, puoi scegliere di disattivarla. Per le istruzioni, consulta Disattivazione lato client metriche.
Limitazioni
Le richieste IPv6 non possono essere inviate tramite reti legacy.
L'utilizzo di gRPC per la connessione a Cloud Storage dovrebbe migliorare le prestazioni in lettura per i carichi di lavoro di analisi in esecuzione su Google Cloud solo quando Compute Engine e i bucket Cloud Storage si trovano nella stessa regione. Sconsigliamo di utilizzare gRPC per i bucket in regioni multiregionali e con due regioni.
La connettività diretta non è supportata quando si utilizzano le seguenti versioni di GKE su cluster solo IPv4:
- 1.28, 1.28.0-gke.100 o versioni successive fino a 1.28.5-gke.1199000
- 1.27, 1.27.4-gke.1900 o versioni successive
- 1.26, 1.26.10-gke.1238000 o versioni successive
- 1.25, 1.25.15-gke.1045000 o versioni successive
gRPC non supporta notifiche, hmacKeys e serviceAccount.
Le opzioni del costruttore del client specifiche per HTTP, ad esempio WithHTTPClient, sono non supportata per la libreria client Go.
Passaggi successivi
- Connettiti al connettore Cloud Storage su Dataproc utilizzando gRPC.
- Abilita gRPC sul connettore Apache Beam I/O in Dataflow.