프로토 필드 번호 변경의 안전성

Dec 10 2020

예를 들어 다음에서 변경 한 경우 :

message Request {
  int foo = 1;
}

...에

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

foo1에서 2 로 변경하는 것이 안전 합니까? 문서에서에게 말하지 않음 : 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.이지만 이유를 알고 싶습니다.

답변

1 Matteo Dec 10 2020 at 17:12

첫 번째 버전으로 생성 된 메시지의 직렬화 된 버전이있는 경우 메시지의 두 번째 버전으로 역 직렬화 할 수 없습니다. protobuf를 사용하여 모델을 생성하여 DB에 저장하거나 Apache Kafka와 같은 브로커에 게시 할 경우 규칙을 따라야합니다. 온라인 사용을 위해 모델 및 서비스를 생성하기 위해 proto 버퍼를 사용하는 경우 아무것도 중단하지 않아야합니다 (모든 모델을 재생성 할 경우).

이전 숫자를 재사용하지 않으 려면 예약 된 키워드 도 참조하십시오 . 여기에 추가 읽기