How does protocol buffer handle versioning?

前端 未结 2 1393
梦如初夏
梦如初夏 2021-02-02 07:02

How does protocol buffers handle type versioning?

For example, when I need to change a type definition over time? Like adding and removing fields.

2条回答
  •  栀梦
    栀梦 (楼主)
    2021-02-02 07:47

    Google designed protobuf to be pretty forgiving with versioning:

    • unexpected data is either stored as "extensions" (making it round-trip safe), or silently dropped, depending on the implementation
    • new fields are generally added as "optional", meaning that old data can be loaded successfully

    however:

    • do not renumber fields - that would break existing data
    • you should not normally change the way any given field is stored (i.e. from a fixed-with 32-bit int to a "varint")

    Generally speaking, though - it will just work, and you don't need to worry much about versioning.

提交回复
热议问题