拷屁一段protobuf的简介:

Protocol buffers是一个灵活的、高效的、自动化的用于对结构化数据进行序列化的协议,与XML相比,Protocol buffers序列化后的码流更小、速度更快、操作更简单。你只需要将要被序列化的数据结构定义一次(译注:使用.proto文件定义),便可以使用特别生成的源代码(译注:使用protobuf提供的生成工具)轻松的使用不同的数据流完成对这些结构数据的读写操作,即使你使用不同的语言(译注:protobuf的跨语言支持特性)。你甚至可以更新你的数据结构的定义(译注:就是更新.proto文件内容)而不会破坏依赖“老”格式编译出来的程序。

示例.proto文件(api.proto):

syntax = "proto3";

package gkeng.comet;

option go_package = "grpc";

import "github.com/gogo/protobuf/gogoproto/gogo.proto";

// protocol
message Proto {
  int32 ver = 1 [(gogoproto.jsontag) = "ver"];
  int32 op = 2 [(gogoproto.jsontag) = "op"];
  int32 seq = 3 [(gogoproto.jsontag) = "seq"];
  int32 body = 4 [(gogoproto.jsontag) = "body"];
}

生成指令(.pb.go文件)

protoc -I=. -I=$GOPATH/src -I=$GOPATH/src/github.com/gogo/protobuf --go_out=plugins=grpc:. ./api.proto

  • 通过-I引入了当前目录、Golang的源码目录和github.com/gogo/protobuf

  • 列表--go_out=plugins=grpc:.:在执行时添加grpc的plugin

  • 列表指定的./api.proto就是我们编写的数据结构文件


.proto 描述文件的编写说明这里就不写了