Halaman ini menampilkan detail khusus Cloud Run untuk developer yang ingin menggunakan gRPC untuk menghubungkan layanan Cloud Run dengan layanan lain, misalnya, untuk memberikan sederhana, komunikasi performa tinggi antara microservice internal. Anda dapat menggunakan semua jenis gRPC, baik streaming maupun unary, dengan Cloud Run.
Kemungkinan kasus penggunaan meliputi:
- Komunikasi antara microservice internal.
- Pemuatan data yang tinggi (gRPC menggunakan buffering protokol, yang hingga tujuh kali lebih cepat daripada panggilan REST).
- Hanya definisi layanan sederhana yang diperlukan, dan Anda tidak ingin menulis library klien secara lengkap.
- Gunakan gRPC streaming di server gRPC Anda untuk membuat aplikasi dan API yang lebih responsif.
Untuk mengintegrasikan layanan Anda dengan gRPC:
- Konfigurasi layanan Anda untuk menggunakan HTTP/2 jika menggunakan gRPC streaming. HTTP/2 adalah metode transport untuk streaming gRPC.
- Tentukan pesan dan respons permintaan dalam file proto, lalu kompilasikan.
- Buat server gRPC untuk menangani permintaan dan menampilkan respons: server tersebut harus memproses
variabel lingkungan
PORT
. - Buat klien yang mengirim permintaan dan menangani respons dari server gRPC.
- Secara opsional, tambahkan autentikasi.
- Build dan deploy layanan Anda.
Mengonfigurasi layanan untuk menggunakan HTTP/2
Google merekomendasikan untuk mengonfigurasi layanan agar menggunakan HTTP/2 jika Anda menggunakan gRPC dengan Cloud Run. Meskipun beberapa fitur gRPC sederhana dapat berfungsi tanpa menggunakan HTTP/2, banyak fitur gRPC, seperti streaming dan metadata, memerlukan HTTP/2.
Menentukan dan mengompilasi pesan dalam file proto
Tidak ada hal tambahan atau khusus Cloud Run yang dapat ditambahkan ke definisi proto Anda. Sama seperti penggunaan gRPC lainnya, Anda menggunakan buffering protokol gRPC untuk definisi layanan dan serialisasi data.
Membuat klien gRPC
Tidak ada hal tambahan atau Cloud Run khusus yang perlu ditambahkan ke klien yang menggunakan gRPC: ikuti dokumen gRPC tentang cara menggunakan definisi layanan dalam kode klien, dan contoh klien disediakan dalam tutorial gRPC bahasa khusus.
Penskalaan otomatis dan load balancing
Cloud Run menggunakan load balancer yang dikelola Google yang memisahkan koneksi antara klien dan instance Cloud Run Anda. Dengan gRPC, penskalaan otomatis berperilaku sebagai berikut:
- Koneksi gRPC dari klien berakhir di load balancer edge. Menyesuaikan setelan
KeepAlive
hanya akan memengaruhi koneksi ke load balancer, bukan ke instance Cloud Run. Klien tidak mengenali saat instance jatuh. - Selama penskalaan, load balancer menutup koneksi dengan mengirimkan pesan GOAWAY ke backend instance saat instance tersebut dimatikan.
- Selama penyebaran skala, load balancer membuat koneksi baru ke instance backend. Semua operasi ini transparan kepada klien.
- Selama penskalaan otomatis, banyak instance dapat memulai dan multipleks menjadi satu koneksi antara klien dan load balancer proxy.
- Konkurensi ditentukan oleh permintaan serentak maksimum per instance untuk pesan. Dalam streaming, setiap streaming dihitung sekali dalam jumlah permintaan serentak maksimum.
Memproses permintaan gRPC di layanan Cloud Run
Satu-satunya persyaratan khusus untuk server gRPC yang berjalan di Cloud Run adalah memproses port yang ditentukan oleh variabel lingkungan PORT
seperti yang ditunjukkan pada kode berikut:
Go
Membuka koneksi gRPC ke layanan
Untuk membuka koneksi gRPC ke layanan sehingga Anda dapat mengirim pesan gRPC, Anda harus menentukan domain host, yang merupakan URL layanan Cloud Run atau domain kustom yang dipetakan ke layanan tersebut, bersama dengan port 443, yang merupakan port yang diharapkan akan digunakan oleh gRPC.
Go
Mengirim permintaan gRPC tanpa autentikasi
Contoh berikut menunjukkan cara mengirim permintaan tanpa autentikasi, menggunakan koneksi gRPC yang dikonfigurasi seperti yang disebutkan sebelumnya.
Go
Mengirim permintaan gRPC dengan autentikasi
Contoh berikut menunjukkan cara menggunakan autentikasi antar-layanan jika layanan panggilan memiliki izin invoker ke layanan penerima. Perhatikan bahwa kode ini menghasilkan header otorisasi yang memiliki token identitas yang tepat: ini diperlukan. Izin yang diperlukan dan header otorisasi dijelaskan secara mendetail dalam autentikasi layanan ke layanan.
Go
Kode contoh untuk streaming gRPC
Untuk contoh kode, lihat penerapan RouteGuide
di
tutorial Dasar-Dasar gRPC untuk
bahasa pilihan Anda. Misalnya, saat menggunakan Go, lihat Mengimplementasikan RouteGuide.