Bezpieczeństwo zmiany numeru pola proto
Na przykład, jeśli zmieniłem z:
message Request {
int foo = 1;
}
do
message Request {
int bar = 1;
int foo = 2;
}
Czy zmiana foo
z 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
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