Bezpieczeństwo zmiany numeru pola proto

Dec 10 2020

Na przykład, jeśli zmieniłem z:

message Request {
  int foo = 1;
}

do

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

Czy zmiana fooz 1 na 2 jest bezpieczna ? Dokumenty mówią, że nie wolno :,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. ale chciałbym wiedzieć, dlaczego.

Odpowiedzi

1 Matteo Dec 10 2020 at 17:12

Jeśli masz zserializowaną wersję wiadomości wygenerowanej za pomocą pierwszej wersji, nie będziesz w stanie przeprowadzić deserializacji z drugą wersją wiadomości. Jeśli używasz protobuf do generowania modelu do przechowywania w bazie danych lub do opublikowania w brokerze takim jak Apache Kafka, musisz przestrzegać konwencji. Jeśli używasz bufora proto do generowania modelu i usługi do użytku online, nie powinieneś niczego łamać (jeśli zregenerujesz wszystkie modele)

Zobacz także zarezerwowane słowo kluczowe , aby nie używać ponownie starej liczby. Dalsza lektura również tutaj