Keamanan mengubah nomor bidang proto

Dec 10 2020

Misalnya jika saya berubah dari:

message Request {
  int foo = 1;
}

untuk

message Request {
  int bar = 1;
  int foo = 2;
}

Apakah aman untuk mengubah foodari 1 ke 2? Dokumen mengatakan untuk tidak :,These numbers are used to identify your fields in the message binary format, and should not be changed once your message type is in use. tapi saya ingin tahu alasannya.

Jawaban

1 Matteo Dec 10 2020 at 17:12

Jika Anda memiliki versi serial dari pesan yang dibuat dengan versi pertama, Anda tidak akan dapat melakukan deserialisasi dengan versi kedua dari pesan tersebut. Jika Anda menggunakan protobuf untuk membuat model untuk disimpan di DB atau dipublikasikan di broker seperti Apache Kafka, Anda harus mengikuti konvensi. Jika Anda menggunakan buffer proto untuk menghasilkan model dan layanan untuk penggunaan online, Anda tidak boleh merusak apa pun (jika Anda akan membuat ulang semua model)

Lihat juga kata kunci yang dipesan agar tidak menggunakan kembali angka lama. Bacaan lebih lanjut juga di sini