Buffering Protokol v3

Bab ini akan membahas cara menggunakan Buffering Protokol dengan desain API. Untuk menyederhanakan pengalaman developer dan meningkatkan efisiensi runtime, gRPC API harus menggunakan Protocol Buffer versi 3 (proto3) untuk definisi API.

Protocol Buffers adalah Interface Definition Language (IDL) yang bersifat netral bahasa dan platform-netral sederhana untuk menentukan skema struktur data dan antarmuka pemrograman. Alat ini mendukung format kabel biner dan teks, serta berfungsi dengan banyak protokol kabel yang berbeda di platform yang berbeda.

Proto3 adalah versi terbaru dari Buffering Protokol dan menyertakan perubahan berikut dari proto2:

  • Keberadaan kolom, yang juga dikenal sebagai hasField, dihapus secara default untuk kolom dasar. Kolom primitif yang tidak ditetapkan memiliki nilai default yang ditentukan bahasa.
    • Keberadaan kolom pesan masih tersedia, yang dapat diuji menggunakan metode hasField yang dihasilkan compiler, atau dibandingkan dengan null, atau nilai sentinel yang ditentukan oleh implementasi.
    • Mulai dari protobuf v3.14, kolom dasar dapat membedakan antara nilai default dan nilai yang tidak ditetapkan dengan menggunakan kata kunci optional, meskipun umumnya hal ini tidak disarankan.
  • Nilai default yang ditetapkan pengguna untuk kolom tidak lagi tersedia.
  • Definisi enum harus diawali dengan nilai enum nol.
  • Kolom wajib diisi tidak lagi tersedia.
  • Ekstensi tidak lagi tersedia. Sebagai gantinya, gunakan google.protobuf.Any.
    • Pengecualian khusus diberikan untuk google/protobuf/descriptor.proto karena alasan kompatibilitas mundur dan runtime.
  • Sintaksis grup dihapus.

Alasan menghapus fitur ini adalah untuk membuat desain API lebih sederhana, lebih stabil, dan lebih berperforma tinggi. Misalnya, sering kali Anda perlu memfilter beberapa kolom sebelum mencatat pesan ke dalam log, misalnya menghapus informasi sensitif. Hal ini tidak dapat dilakukan jika kolom ini wajib diisi.

Lihat Buffering Protokol untuk informasi lebih lanjut.