一句话理解:比json传输效率更高且体积更小的数据格式
举例说明: 在golang中有这样一个Hello结构体:
type Hello struct{
Name string `json:"name"`
}
使用json.Marshal方法获得的数据长度为15
a := Hello{
Name: "JOJO",
}
使用proto: 1.先定义一个hello.proto文件
syntax = 'proto3';
//protoc -I . goods.proto --go_out=plugins=grpc:.
option go_package = "./;hello";
message HelloRequest{
string name = 1; //1是编号
}
2.生成对应的golang代码
protoc -I . goods.proto --go_out=plugins=grpc:.
3.使用
s := hello.HelloRequest{
Name: "JOJO",
}
rsp, _ := proto.Marshal(&s)
获得的byte数组长度仅为6
结论:
- proto优点:字段越多,体积相对更小,传输速度更快,没有语言限制,常用语grpc等微服务框架传输数据
- proto缺点:使用相对于json更为复杂