protobuf 指定 json_字节跳动踩坑记:一知半解protobuf

本文记录了在广告系统中使用protobuf时遇到的一个问题,即无论请求如何设置,protobuf解码后始终得到ads_count为1。经过排查发现,原因是双方proto文件不一致,解决后恢复正常。此外,文章还简要介绍了protobuf的编码过程,包括varint和ZigZag编码等。
摘要由CSDN通过智能技术生成

a18039fc36404beca5b79c85033b4a85.png

本篇写个小坑,别期望太高…


在广告系统里,对延迟是毫秒必争(毕竟省下来的每一毫秒都可以用在后端优化效果),因此我们和外部媒体之间的通信往往使用 protobuf 。

相比 json、xml,protobuf 确实节省了不少编解码的时间以及网络开销,不过相应的代价是牺牲了便利性,不能用 vi 等文本编辑器查看/修改,遇到问题时排查也比较麻烦。


- 入坑 -

比如 7 月份,某媒体希望一次请求中拉到多条广告(用于信息流场景),因此在 imp 添加一个 ads_count 字段,用于标识本次请求需要的广告数量。

过程是这样,在 xxx.proto 里给 Impression 类型添加一个新字段:

package com.xxx;message BidRequest {
      string id = 1;  int32 ver = 2;  message Impression {
        ...    int32 ads_count = 9;  }  Impression imp = 3;  ...}

然后用 protoc 编译,生成新版的 xxx.pb.go 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值