總覽:
開源、高性能、多語言、跨平台、易擴展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目前現有的一些問題及涉及客戶端和服務端版本差異導致的一些不必要的問題。