gRPC 是Google發起的一個開源遠端程序呼叫系統,基於HTTP/2協定及Protocol Buffers序列化協定設計而成的,主打著高性能、跨平台、跨語言。
Protocol Buffers的簡稱為ProtoBuf,是一種序列化的資料結構協定,使用者只要定義文件描述檔(.proto),就能透protoc自動轉成服務端的接口程式。
syntax = "proto3";
package mypb;
option go_package = ".;mypb";
service MyprotoService {
rpc AddUser(UserRequest) returns (UserResponse){}
rpc LoginUser(UserRequest) returns (UserResponse){}
rpc UsersList(UsersListRequest) returns (UsersListResponse){}
}
message UserRequest {
string user_name = 1;
string user_pwd = 2;
}
message UserResponse {
string result = 1;
}
message UsersListRequest {}
message UsersListResponse {
string result = 1;
repeated string user_name = 2;
}
由上述簡單的ProtoBuf文件,可以看出message是用來定義Request和Response,我們總共定義3個簡單的function
用下列指令執行,將.proto產生出對應語言的程式碼,命令完成會得到副檔名為".pb.go"的檔案。
✗ protoc -I . *.proto --go_out=plugins=grpc:.