【分布式】ProtocolBuffer平滑升级原则

171 篇文章 147 订阅 ¥29.90 ¥99.00
52 篇文章 17 订阅 ¥9.90 ¥99.00
16 篇文章 1 订阅 ¥9.90 ¥99.00
本文介绍了Protocol Buffer在升级过程中需要注意的关键细节,以确保不同开发语言之间的通信以及服务器平滑升级。主要内容包括:禁止在已有Message中添加required字段,保持字段标签号不变,新增字段为optional或repeated,不允许删除required字段,删除字段时保留其标签号,支持字段名称修改,以及类型兼容性原则等。
摘要由CSDN通过智能技术生成

原文链接:https://blog.csdn.net/nash_cyk/article/details/99549719

关于Protocol Buffer优势这里就不详细介绍了,如便于不同开发语言的交互通信,便于服务器上线的平滑升级等。

但Protocol Buffer的Message协议升级是需要注意一些细节,以下几点作为开发者需要特殊关注:
1、 原有的Message重新填加新的字段信息时不允许有required字段,具体原因就是旧的版本程序无法读取对应的required字段信息。
2、 再修改原有的Message时,要保证不能修改对应的标签号,就是每一个字段后面的1,2,3序列号,不允许修改。
3、 原有的Message添加新的字段时,类型要保证是optional或者repeated。
4、 如果Message字段已经存在required字段,重新调整时不允许删除required字段。
5、 如果删除原有的Message某个字段时,对应的字段标签号要保留不允许其他字段使用,比如说删除了 optional int server_id = 3 这个字段,这个标签号 3 是不允许再被其他字段使用的。
6、Protocol Buffer是支持修改对应字段的名称的,如optional int server_id = 3修改成optional int idc_id = 3
7、如果考虑修改Message中的类型,需要注意类型的兼容性,如int32、uint32、int64、uint64和bool等类型之间是兼容的,sint32和sint64是兼容的,string和bytes是兼容的,fixed32和sfixed32,以及fixed64和sfixed64之间是兼容的,为了保证兼容性,只能将其修改为与其原有类型兼容的类型,否则就将打破新老消息格式的兼容性。

8、字段类型上optional与repeated也是相互兼容的。

维护协议时记住以上几点即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叹了口丶气

觉得有收获就支持一下吧~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值