总览:
开源、高性能、多语言、跨平台、易扩展rpc框架 。
Protocol Buffers 使用
默认使用 protocol buffers,Google 开源的成熟序列化机制:
文件格式:.proto 文本文件.
程序文件生成:官方提供的 protoc 程序生成目标程序文件。
示例定义:
通信数据格式:
message Person {
string name = 1;
int32 id = 2;
bool has_ponycopter = 3;
}
服务,方法(参数及返回)定义:
// The greeter service definition.
service Greeter {
// Sends a greeting
rpc SayHello (HelloRequest) returns (HelloReply) {}
}
// The request message containing the user's name.
message HelloRequest {
string name = 1;
}
// The response message containing the greetings
message HelloReply {
string message = 1;
}
gRPC提供插件式生成方式。
详细文档:Protocol Buffers documentation。
Protocol buffer 版本
Protocol buffer 已经开源一段时间了,项目示例目前使用proto3版本,最新版本对一些定义做了简化,添加了一些新的特性,并且在语言支持上做了扩展。
protocol buffers GitHub repo 库:Java, C++, Python, Objective-C, C#, a lite-runtime (Android Java), Ruby, and JavaScript。
golang/protobuf GitHub repo 库:Go。
详细文档:proto3 language guide 、reference documentation。
通常来说,建议将使用的proto3版本,除了可以使用所有的特性外,同时也可以避免proto2目前现有的一些问题及涉及客户端和服务端版本差异导致的一些不必要的问题。
项目示例:https://github.com/windwant/grpc-service