本篇写个小坑,别期望太高…
在广告系统里,对延迟是毫秒必争(毕竟省下来的每一毫秒都可以用在后端优化效果),因此我们和外部媒体之间的通信往往使用 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