gRPC adalah framework RPC universal open source berperforma tinggi yang dikembangkan oleh Google dan dapat Anda gunakan untuk menentukan layanan menggunakan Protocol Buffers. Anda dapat menggunakan gRPC untuk berinteraksi dengan Cloud Storage. gRPC menggunakan konektivitas langsung antara bucket Compute Engine dan Cloud Storage, yang mengabaikan Google Front End (GFEs).
Meskipun penggunaan gRPC secara langsung untuk terhubung ke Cloud Storage tidak didukung, Anda dapat terhubung ke Cloud Storage menggunakan gRPC melalui klien yang didukung berikut:
- Konektor Cloud Storage di Dataproc.
- Konektor I/O Apache Beam di Dataflow untuk permintaan baca dan write.
- Library klien Cloud Storage C++, Go, dan Java. Untuk mengetahui petunjuk cara mengaktifkan gRPC untuk library klien ini, lihat Mengaktifkan gRPC di library klien.
Mengaktifkan gRPC di library klien
C++
Sebelum memulai
Pastikan Anda telah menginstal versi berikut:
- gRPC versi 1.65.1 atau yang lebih baru.
- Library klien C++ versi v2.30.0 atau yang lebih baru.
- C++ versi 14 atau yang lebih baru.
Untuk petunjuk penginstalan, lihat Menyiapkan lingkungan pengembangan C++.
Mengonfigurasi library klien C++
Buat klien gRPC menggunakan
gcs::MakeGrpcClient()
:namespace gcs = google::cloud::storage; void App() { auto client = gcs::MakeGrpcClient(); // application code }
Library klien C++ secara otomatis menggunakan konektivitas langsung saat mendeteksi bahwa aplikasi berjalan di Google Cloud.
Untuk mengonfigurasi library klien C++ agar menggunakan gRPC, aktifkan klien gRPC Cloud Storage untuk memperbarui konfigurasi sistem build Anda untuk
CMake
danBazel
.CMake
Mengaktifkan plugin klien gRPC Cloud Storage pada waktu kompilasi
cmake -DGOOGLE_CLOUD_CPP_ENABLE=storage_grpc [other options here]
Dalam codebase Anda, untuk perintah
target_link_libraries()
, gantigoogle-cloud-cpp::storage
dengangoogle-cloud-cpp::storage_grpc
Misalnya, program memulai cepat untuk gRPC menggunakan kode berikut:
add_executable(quickstart_grpc quickstart_grpc.cc) target_link_libraries(quickstart_grpc google-cloud-cpp::storage_grpc)
Bazel
Ganti dependensi dari
@google_cloud_cpp//:storage
menjadi@google_cloud_cpp//:storage_grpc
.Misalnya, program memulai cepat untuk gRPC menggunakan kode berikut:
cc_binary( name = "quickstart", srcs = [ "quickstart.cc", ], deps = [ "@com_github_googleapis_google_cloud_cpp//:storage_grpc", ], )
Java
Sebelum memulai
Pastikan Anda telah menginstal versi berikut:
Library klien Java:
com.google.cloud:google-cloud-storage:2.43.1
atau yang lebih baru.com.google.cloud:libraries-bom:26.48
atau yang lebih baru.
Java 8 atau yang lebih baru
Untuk petunjuk penginstalan, lihat Menyiapkan lingkungan pengembangan Java.
Mengupdate project untuk menggunakan BOM
Untuk memastikan project Anda memiliki versi library klien Google Cloud yang kompatibel, gunakan versi yang ditentukan dalam Bill of Materials (BOM) library Google Cloud. Untuk memperbarui project Anda agar menggunakan BOM, gunakan salah satu metode berikut:
Cloud Storage Mandiri
Jika Anda menggunakan library klien Cloud Storage secara independen (tanpa library Google Cloud lainnya), gunakan BOM khusus library klien Cloud Storage.
Maven
Impor BOM di bagian dependencyManagement
file pom.xml
Anda.
Contoh berikut menunjukkan cara mengimpor BOM dan menyertakan
artefak 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
Tambahkan dependensi platform di 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 dengan library Google Cloud lainnya
Jika Anda menggunakan library klien Cloud Storage bersama dengan library Google Cloud lainnya, gunakan BOM library klien Google Cloud.
Maven
Impor BOM di bagian dependencyManagement
file pom.xml
Anda.
Contoh berikut menunjukkan cara mengimpor BOM dan menyertakan
artefak libraries-bom
.
<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
Tambahkan dependensi platform di com.google.cloud:libraries-bom
:
implementation platform('com.google.cloud:libraries-bom:26.48.0')
implementation 'com.google.cloud:google-cloud-storage'
Membuat klien gRPC
Contoh berikut menggunakan builder yang berfokus pada gRPC. Klien Java gRPC otomatis menggunakan konektivitas langsung saat mendeteksi bahwa aplikasi berjalan di Google Cloud.
Go
Sebelum memulai
Pastikan Anda menggunakan library klien Cloud Storage Go versi 1.46.0 atau yang lebih baru.
Membuat klien gRPC
Untuk menggunakan klien, Anda perlu memanggil konstruktor NewGRPCClient
di
aplikasi, bukan 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)
}
Library klien Go otomatis menggunakan konektivitas langsung saat mendeteksi bahwa aplikasi berjalan di Google Cloud.
Untuk informasi tentang cara menggunakan klien gRPC, lihat gRPC API.
Mengonfigurasi Kontrol Layanan VPC
Jika menggunakan Virtual Private Cloud dengan alamat IP virtual yang dibatasi ( Kontrol Layanan VPC) untuk meningkatkan keamanan jaringan, Anda perlu memperbarui aturan firewall untuk mengaktifkan konektivitas langsung guna mendapatkan performa optimal antara instance virtual machine Compute Engine dan Cloud Storage.
Untuk melakukannya, tambahkan aturan firewall daftar yang diizinkan untuk mengizinkan traffic di semua port untuk blok CIDR berikut:
- Untuk traffic IPv4:
34.126.0.0/18
- Untuk traffic IPv6:
2001:4860:8040::/42
Selain aturan sebelumnya, pertahankan aturan daftar yang diizinkan yang ada untuk
199.36.153.4/30
.
Jika Anda memiliki batasan pada modifikasi aturan firewall dan tidak dapat memperbaruinya, Anda dapat memaksa traffic untuk menghindari konektivitas langsung menggunakan storage.googleapis.com
sebagai endpoint Cloud Storage, bukan google-c2p://storage.googleapis.com
.
Misalnya, untuk penggunaan C++, .set<google::cloud::EndpointOption>(storage.googleapis.com)
,
bukan google-c2p:///storage.googleapis.com
.
Mengaktifkan kemampuan observasi untuk permintaan terkait gRPC
Anda dapat mengonfigurasi library klien Cloud Storage untuk menghasilkan metrik terkait gRPC di Cloud Monitoring. Metrik terkait gRPC dapat membantu Anda melakukan hal berikut:
Pantau dan optimalkan performa permintaan gRPC ke Cloud Storage.
Memecahkan masalah dan men-debug masalah.
Dapatkan insight tentang penggunaan dan perilaku aplikasi Anda.
Untuk informasi tentang cara membuat metrik terkait gRPC, lihat Menggunakan metrik sisi klien.
Jika pengumpulan metrik tidak diperlukan untuk kasus penggunaan Anda, Anda dapat memilih untuk tidak ikut mengumpulkan metrik. Untuk mengetahui petunjuknya, lihat Memilih tidak ikut metrik sisi klien.
Batasan
Permintaan IPv6 tidak dapat dikirim melalui jaringan lama.
Penggunaan gRPC untuk terhubung ke Cloud Storage diharapkan dapat meningkatkan performa baca untuk workload analisis yang berjalan di Google Cloud hanya jika VM komputasi dan bucket Cloud Storage berada di region yang sama. Sebaiknya jangan gunakan gRPC untuk bucket di multi-region dan dual-region.
Konektivitas langsung tidak didukung saat menggunakan versi GKE berikut di cluster khusus IPv4:
- 1.28, 1.28.0-gke.100 atau yang lebih baru hingga 1.28.5-gke.1199000
- 1.27, 1.27.4-gke.1900 atau yang lebih baru
- 1.26, 1.26.10-gke.1238000 atau yang lebih baru
- 1.25, 1.25.15-gke.1045000 atau yang lebih baru
gRPC tidak mendukung metode notifications, hmacKeys, dan serviceAccount.
Opsi konstruktor klien khusus HTTP, seperti WithHTTPClient, tidak didukung untuk library klien Go.
Langkah selanjutnya
- Menghubungkan ke konektor Cloud Storage di Dataproc menggunakan gRPC.
- Aktifkan gRPC di konektor I/O Apache Beam di Dataflow.