Protobuf

文章目录

  • 什么是protobuf
  • 安装protoc
  • 安装gogo protobuf
  • 参考

什么是protobuf

protobuf是Google官方出品的一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。

使用protobuf,需要先书写.proto文件,然后编译该文件。编译proto文件则需要使用到官方的protoc工具,安装文档请参看:
https://github.com/protocolbuffers/protobuf#protocol-compiler-installation

注意:protoc是用于编辑proto文件的工具,它并不具备生成对应语言代码的能力,所以正常都是protoc配合对应语言的代码生成工具来使用,如Go语言的gogo protobuf,安装文档请参看:
https://github.com/gogo/protobuf

安装好对应工具后,我们可以进入api目录,执行如下命令:

export $KRATOS_HOME = kratos路径
export $KRATOS_DEMO = 项目路径

// 生成:api.pb.go
protoc -I$GOPATH/src:$KRATOS_HOME/tool/protobuf/pkg/extensions:$KRATOS_DEMO/api --gogofast_out=plugins=grpc:$KRATOS_DEMO/api $KRATOS_DEMO/api/api.proto

// 生成:api.bm.go
protoc -I$GOPATH/src:$KRATOS_HOME/tool/protobuf/pkg/extensions:$KRATOS_DEMO/api --bm_out=$KRATOS_DEMO/api $KRATOS_DEMO/api/api.proto

// 生成:api.swagger.json
protoc -I$GOPATH/src:$KRATOS_HOME/tool/protobuf/pkg/extensions:$KRATOS_DEMO/api --bswagger_out=$KRATOS_DEMO/api $KRATOS_DEMO/api/api.proto

请注意替换/Users/felix/work/go/src目录为你本地开发环境对应GOPATH目录,其中–gogofast_out意味着告诉protoc工具需要使用gogo protobuf的工具生成代码。

安装protoc

linux:
下载protoc-3.12.0-rc-1-linux-x86_64.zip,解压,把bin目录下的protoc复制到GOROOT/bin下,GOROOT/bin加入环境变量PATH

安装gogo protobuf

Install the protoc-gen-gofast binary

go get github.com/gogo/protobuf/protoc-gen-gofast
go get github.com/gogo/protobuf/proto
go get github.com/gogo/protobuf/protoc-gen-gogofast
go get github.com/gogo/protobuf/protoc-gen-gogofaster
go get github.com/gogo/protobuf/protoc-gen-gogoslick
go get github.com/gogo/protobuf/gogoproto

参考

protoc -I /home/***/go/src --proto_path=/media/E/Go_workspace/go_online/tool/protobuf/ --proto_path=. --gogofast_out=plugins=grpc:. *.proto

你可能感兴趣的:(Tools)