プロトフィールド番号の変更の安全性
Dec 10 2020
たとえば、次のように変更した場合:
message Request {
int foo = 1;
}
に
message Request {
int bar = 1;
int foo = 2;
}
foo
1から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
最初のバージョンで生成されたメッセージのシリアル化されたバージョンがある場合、メッセージの2番目のバージョンで逆シリアル化することはできません。protobufを使用してモデルを生成し、DBに格納したり、Apache Kafkaなどのブローカーで公開したりする場合は、規則に従う必要があります。オンラインで使用するためのモデルとサービスを生成するためにprotobufferを使用する場合は、何も壊さないでください(すべてのモデルを再生成する場合)
古い数値を再利用しないようにするには、reservedキーワードも参照してください。さらに読むここでも