Ringkasan Cloud Service Mesh dengan layanan gRPC tanpa proxy

Panduan ini menyajikan ringkasan arsitektur Cloud Service Mesh dengan layanan gRPC tanpa proxy, termasuk kasus penggunaan dan pola arsitektur.

Bidang kontrol terkelola Cloud Service Mesh memungkinkan perutean global, load balancing, dan failover regional untuk kasus penggunaan mesh layanan dan load balancing. Ini mencakup deployment yang menggabungkan proxy file bantuan dan proxy gateway. Dukungan Cloud Service Mesh untuk aplikasi gRPC tanpa proxy menawarkan model deployment tambahan, yang memungkinkan aplikasi gRPC untuk berpartisipasi dalam mesh layanan tanpa memerlukan proxy file bantuan.

Pada contoh umum, klien gRPC membuat koneksi dengan server gRPC yang menghosting logika backend Anda. Cloud Service Mesh memberikan informasi kepada klien gRPC Anda tentang server yang harus dihubungi, cara memuat permintaan saldo ke beberapa instance server, dan apa yang harus dilakukan dengan permintaan jika server tidak berjalan.

Untuk ringkasan lengkap tentang cara kerja Cloud Service Mesh, lihat ringkasan Cloud Service Mesh.

Cara kerja Cloud Service Mesh dengan aplikasi gRPC

Cloud Service Mesh mengonfigurasi klien gRPC dengan versi gRPC yang didukung, mirip dengan cara proxy file bantuan seperti Envoy dikonfigurasi. Namun, aplikasi gRPC tanpa proxy yang terhubung langsung ke Cloud Service Mesh tidak memerlukan proxy bantuan. Sebagai gantinya, Cloud Service Mesh menggunakan API xDS open source untuk mengonfigurasi aplikasi gRPC secara langsung. Aplikasi gRPC ini bertindak sebagai klien xDS, yang terhubung ke bidang kontrol global Cloud Service Mesh. Setelah terhubung, aplikasi gRPC akan menerima konfigurasi dinamis dari bidang kontrol, yang memungkinkan penemuan endpoint, load balancing, failover regional, dan health check. Pendekatan ini memungkinkan pola deployment Cloud Service Mesh tambahan.

Dalam ilustrasi pertama, mesh layanan diaktifkan dengan menggunakan proxy file bantuan.

Mesh layanan yang diaktifkan dengan menggunakan proxy file bantuan.
Mesh layanan yang diaktifkan dengan menggunakan proxy file bantuan (klik untuk memperbesar)

Untuk mengonfigurasi proxy file bantuan, Cloud Service Mesh menggunakan API xDS. Klien berkomunikasi dengan server melalui proxy file bantuan.

Dalam ilustrasi kedua, mesh layanan diaktifkan tanpa proxy file bantuan menggunakan klien gRPC tanpa proxy.

Mesh layanan yang diaktifkan menggunakan gRPC tanpa proxy.
Mesh layanan yang diaktifkan menggunakan gRPC tanpa proxy (klik untuk memperbesar)

Jika hanya men-deploy layanan gRPC yang dikonfigurasi oleh Cloud Service Mesh, Anda dapat membuat mesh layanan tanpa men-deploy proxy sama sekali. Hal ini memudahkan Anda menghadirkan kemampuan mesh layanan ke aplikasi gRPC.

Resolusi nama

Resolusi nama berfungsi untuk deployment tanpa proxy dengan cara berikut:

  1. Anda menetapkan xds sebagai skema resolusi nama di saluran klien gRPC saat terhubung ke layanan. URI target diformat sebagai xds:///hostname:port. Jika port tidak ditentukan, nilai defaultnya adalah 80—misalnya, dalam URI target xds:///example.hostname.
  2. Klien gRPC me-resolve hostname:port di URI target dengan mengirimkan permintaan layanan penemuan pemroses (LDS) ke Cloud Service Mesh.
  3. Cloud Service Mesh mencari aturan penerusan yang telah dikonfigurasi dan memiliki port yang cocok. Kemudian, sistem akan mencari peta URL yang sesuai untuk aturan host yang cocok dengan hostname:port. Metode ini menampilkan konfigurasi perutean terkait ke klien gRPC.

Aturan host yang Anda konfigurasi di Cloud Service Mesh harus unik di semua peta URL. Misalnya, example.hostname, example.hostname:80, dan example.hostname:8080 adalah aturan yang berbeda.

Resolusi nama dengan berbagai jenis deployment

Skema resolusi nama berbeda untuk deployment dan deployment tanpa proxy yang menggunakan proxy Envoy.

Klien gRPC menggunakan skema resolusi nama xds untuk terhubung ke layanan, sehingga klien dapat menerima konfigurasi layanan dari Cloud Service Mesh. Klien gRPC kemudian berkomunikasi langsung dengan server gRPC.

Anda dapat menggabungkan pola deployment proxy dan tanpa proxy untuk meningkatkan fleksibilitas. Menggabungkan pola sangat membantu jika organisasi dan jaringan Anda mendukung beberapa tim dengan persyaratan fitur, kebutuhan operasi, dan versi gRPC yang berbeda.

Dalam ilustrasi berikut, klien gRPC tanpa proxy dan klien gRPC dengan proxy file bantuan berkomunikasi dengan server gRPC. Klien gRPC dengan proxy bantuan menggunakan skema resolusi nama dns.

Mesh layanan yang terdiri dari klien gRPC tanpa proxy dan klien gRPC dengan proxy file bantuan.
Mesh layanan yang terdiri dari klien gRPC tanpa proxy dan klien gRPC dengan proxy file bantuan (klik untuk memperbesar)

Kasus penggunaan

Kasus penggunaan berikut membantu Anda memahami kapan Anda perlu menggunakan Cloud Service Mesh dengan aplikasi gRPC tanpa proxy. Deployment Anda dapat menyertakan aplikasi gRPC tanpa proxy, aplikasi gRPC dengan proxy sidecar, atau campuran keduanya.

Efisiensi resource dalam mesh layanan berskala besar

Jika mesh layanan Anda mencakup ratusan atau ribuan klien dan backend, Anda mungkin mendapati bahwa total konsumsi resource dari menjalankan proxy file bantuan mulai bertambah. Saat menggunakan aplikasi gRPC tanpa proxy, Anda tidak perlu memperkenalkan proxy file bantuan ke deployment. Pendekatan tanpa proxy dapat menghasilkan peningkatan efisiensi.

Aplikasi gRPC berperforma tinggi

Untuk beberapa kasus penggunaan, setiap milidetik latensi permintaan dan respons itu penting. Dalam kasus semacam ini, Anda mungkin menemukan latensi yang berkurang saat menggunakan aplikasi gRPC tanpa proxy, bukan meneruskan setiap permintaan melalui proxy sidecar sisi klien dan, kemungkinan, proxy sidecar sisi server.

Mesh layanan untuk lingkungan tempat Anda tidak dapat men-deploy proxy file bantuan

Di beberapa lingkungan, Anda mungkin tidak dapat menjalankan proxy file bantuan sebagai proses tambahan bersama aplikasi klien atau server. Atau, Anda mungkin tidak dapat mengonfigurasi stack jaringan mesin untuk intersepsi dan pengalihan permintaan—misalnya, dengan menggunakan iptables. Dalam hal ini, Anda dapat menggunakan Cloud Service Mesh dengan aplikasi gRPC tanpa proxy untuk memperkenalkan kemampuan mesh layanan ke aplikasi gRPC Anda.

Mesh layanan heterogen

Karena aplikasi gRPC tanpa proxy dan Envoy berkomunikasi dengan Cloud Service Mesh, mesh layanan Anda dapat menyertakan kedua model deployment. Dengan menyertakan kedua model tersebut, Anda dapat memenuhi kebutuhan operasional, performa, dan fitur tertentu dari berbagai aplikasi dan tim pengembangan yang berbeda.

Bermigrasi dari mesh layanan dengan proxy ke mesh tanpa proxy

Jika sudah memiliki aplikasi gRPC dengan proxy file bantuan yang dikonfigurasi Cloud Service Mesh, Anda dapat beralih ke aplikasi gRPC tanpa proxy.

Saat klien gRPC di-deploy dengan proxy file bantuan, klien gRPC akan menggunakan DNS untuk me-resolve nama host yang terhubung dengannya. Proxy file bantuan mencegat traffic untuk memberikan kemampuan mesh layanan.

Anda dapat menentukan apakah klien gRPC menggunakan rute tanpa proxy atau rute proxy file bantuan untuk berkomunikasi dengan server gRPC dengan mengubah skema resolusi nama yang digunakannya. Klien tanpa proxy menggunakan skema resolusi nama xds, sedangkan proxy file bantuan menggunakan skema resolusi nama dns. Beberapa klien gRPC bahkan mungkin menggunakan rute tanpa proxy saat berkomunikasi dengan satu server gRPC, tetapi menggunakan rute proxy file bantuan saat berkomunikasi dengan server gRPC lain. Dengan demikian, Anda dapat bermigrasi secara bertahap ke deployment tanpa proxy.

Untuk bermigrasi dari mesh layanan dengan proxy ke mesh tanpa proxy, Anda harus membuat layanan Mesh Layanan Cloud baru yang digunakan klien gRPC tanpa proxy. Anda dapat menggunakan API yang sama guna mengonfigurasi Cloud Service Mesh untuk versi yang sudah ada dan yang baru.

Mesh layanan dengan klien gRPC yang berkomunikasi dengan berbagai layanan menggunakan mekanisme tanpa proxy dan berbasis proxy.
Mesh layanan dengan klien gRPC yang berkomunikasi dengan berbagai layanan menggunakan mekanisme tanpa proxy dan berbasis proxy (klik untuk memperbesar)

Arsitektur dan referensi

Model data konfigurasi untuk layanan gRPC tanpa proxy memperluas model konfigurasi Cloud Service Mesh, dengan beberapa penambahan dan batasan yang dijelaskan dalam panduan ini. Beberapa batasan ini bersifat sementara karena gRPC tanpa proxy tidak mendukung semua fitur Envoy, dan yang lainnya bersifat melekat pada penggunaan RPC. Misalnya, pengalihan HTTP yang menggunakan gRPC tidak didukung. Untuk membantu Anda memahami model konfigurasi dalam panduan ini, sebaiknya pahami konsep dan konfigurasi Cloud Service Mesh.

Diagram berikut menunjukkan resource yang harus Anda konfigurasi untuk aplikasi gRPC tanpa proxy.

Resource yang didukung dalam gRPC tanpa proxy untuk load balancing.
Resource yang didukung dalam gRPC tanpa proxy untuk load balancing (klik untuk memperbesar)

Health check

Health check gRPC dapat memeriksa status layanan gRPC yang berjalan pada instance virtual machine (VM) backend atau grup endpoint jaringan (NEG).

Jika health check gRPC tidak dapat digunakan karena server gRPC Anda tidak menerapkan protokol health check gRPC, gunakan health check TCP sebagai gantinya. jangan gunakan health check HTTP, HTTPS, atau HTTP/2.

Untuk informasi selengkapnya, lihat health check gRPC dan Flag tambahan untuk health check gRPC.

Layanan backend

Layanan backend menentukan cara klien gRPC berkomunikasi dengan server gRPC. Saat Anda membuat layanan backend untuk gRPC, tetapkan kolom protokol ke GRPC.

  • Layanan backend yang dikonfigurasi dengan protokol yang ditetapkan ke GRPC juga dapat diakses oleh aplikasi gRPC melalui proxy file bantuan. Dalam situasi tersebut, klien gRPC tidak boleh menggunakan skema resolusi nama xds.

  • Di semua deployment Cloud Service Mesh, skema load balancing untuk layanan backend harus berupa INTERNAL_SELF_MANAGED.

Backend

Backend menghosting instance server gRPC Anda. Anda dapat menggunakan grup instance terkelola atau tidak terkelola di Compute Engine dan NEG zona di Google Kubernetes Engine sebagai backend untuk menghosting instance server gRPC Anda.

Langkah selanjutnya