在项目中, 不同的模块用过到了不同的语言, 进行通信的时候, 原本采用的方法是在不同的模块定义相同的通信结构体, 但是随着系统变得越来越复杂, 这样的方法越来越不可行。
Protobuf是一个跨语言、跨平台的具有可扩展机制的序列化数据工具。采用该工具我们可以定义一套模块间传输的结构体, 生成不同的语言的代码, 赖在模块之间传递信息。
Protobuf的源码: https://github.com/google/protobuf
编译安装
./configure
make
make check
make install
protoc -h // 验证protoc是否安装正确
安装插件:
yum install -y protoc-gen-go
yum install -y protoc-gen-java
定义protobuf以及生成源码
产生一个.proto为后缀的文件, 在里面定义所需要的结构体。
然后产生不同语言的源码。
golang: 产生 xx.pb.go
protoc –go_out=. xx.proto
java: 产生xx.pb.java
protoc –java_out=. xx.proto
protobuf产生源码的使用
- golang语言
基本就是proto.Marshal与proto.Unmarshal, 具体的例子:
https://studygolang.com/articles/4872 - Java 语言
http://shift-alt-ctrl.iteye.com/blog/2210885