Halaman ini menampilkan detail khusus penayangan Knative untuk developer yang ingin menggunakan gRPC untuk menghubungkan layanan penyaluran Knative dengan layanan lain, misalnya, untuk menyediakan komunikasi sederhana dan berperforma tinggi antara microservice dalam container. Penyajian Knative mendukung unary dan streaming panggilan gRPC.
gRPC Unary
Dalam panggilan RPC unary, klien mengirimkan satu permintaan ke server dan mendapatkan respons tunggal balik, mirip dengan panggilan fungsi normal:rpc SayHello(HelloRequest) returns (HelloResponse);
Streaming gRPC
Opsi streaming berikut tersedia dengan gRPC. RPC streaming server tempat klien mengirimkan permintaan ke server dan mendapatkan {i>stream<i} untuk dibaca yang berisi urutan pesan. Klien membaca output yang ditampilkan mengalirkan pesan hingga tidak ada lagi pesan.
rpc LotsOfReplies(HelloRequest) returns (stream HelloResponse);
RPC streaming klien tempat klien menulis urutan pesan dan mengirim mereka ke server dalam sebuah aliran. Setelah klien selesai menulis pesan, menunggu server untuk mengembalikan responsnya.
rpc LotsOfGreetings(stream HelloRequest) returns (HelloResponse);
RPC streaming dua arah tempat klien dan server mengirim pesan dalam dua {i>read-write<i} yang beroperasi secara independen.
rpc BidiHello(stream HelloRequest) returns (stream HelloResponse);
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.
Untuk mengintegrasikan layanan Anda dengan 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.
Menentukan dan mengompilasi pesan dalam file proto
Tidak ada tambahan atau Knative yang menyajikan hal khusus untuk ditambahkan ke proto Anda definisi. Sama seperti penggunaan gRPC lainnya, Anda menggunakan buffering protokol gRPC untuk definisi layanan dan serialisasi data.
Membuat klien gRPC
Tidak ada tambahan atau Knative yang menyajikan hal-hal khusus untuk ditambahkan ke klien yang menggunakan gRPC: ikuti dokumen gRPC tentang penggunaan definisi layanan dalam kode klien, dan contoh klien yang disediakan dalam bahasa Tutorial gRPC.
Memproses permintaan gRPC dalam layanan penayangan Knative
Satu-satunya persyaratan khusus
untuk server gRPC yang berjalan di
Penyajian Knative adalah memantau port yang ditentukan oleh PORT
variabel lingkungan seperti yang ditunjukkan dalam kode:
Go
Membuka koneksi gRPC ke layanan
Untuk membuka koneksi gRPC ke layanan agar dapat mengirim pesan gRPC, Anda memerlukan untuk menentukan domain host, yang merupakan URL layanan penayangan Knative atau domain kustom yang dipetakan ke layanan tersebut, bersama dengan port 443, yang merupakan porta 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.