iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 21
1

在前面我們有介紹http的方式,來讓服務可以被使用者呼叫,
除了那個方法外,還有另一個方式來跟其他服務或讓使用者呼叫,也就是GRPC。

GRPC是什麼?

GRPC是google開發的RPC架構,基於HTTP/2協定跟Protocol Buffers的序列化協定設計。
通常會由Server端跟Client端組成。
有著以下優點:

  1. Protocol Buffers 二進位制訊息,使得效能提高。
  2. 使用HTTP/2 ,在傳送和接收時都是精簡且有效率的。
  3. 支援多語言

還有其他優點像是嚴格定義輸出跟輸入的值,或是支援向前/向後相容 等等,在這邊只先介紹一些。

Protocol Buffers

要使用GRPC前,必須要先定義Protocol Buffers,Protocol Buffers是google公司定義的一種資料格式,
有點類似定義該服務有哪些API,那些API需要帶入哪些請求參數跟回應參數,
基本上都是以.proto結尾,這邊先定義一個範例。

service WebServer {  
    rpc UpdateUserData (UpdateUserDataRequest) returns (UpdateUserDataReply) {}
}

message UpdateUserDataRequest {  
    int64 user_id = 1;
    string user_name = 2;
    string email = 3;
}

message UpdateUserDataReply {  
    string success = 1;
}

上面可以看到,我們定義了一個方法,他的請求參數跟回應參數也都嚴格定義,
代表你沒辦法傳字串(string)進去user_id,
就不會出現使用者跟server參數型別搞不定的問題。

建立package

要在go內使用grpc,必須先從Protocol Buffers建出grpc套件,
首先必須要先安裝grpc-go的套件。

 go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
 go get -u google.golang.org/grpc

安裝好了後確認bin的路徑是否正確

PATH=$PATH:$GOPATH/bin

接下來就可以下指令依Protocol Buffers建立grpc 的.pb.go檔了

protoc --go_out=plugins=grpc:. *.proto

在下一章,會介紹如何使用grpc套件建立client端跟server端


上一篇
Day20-平行處理 channel
下一篇
Day22-Grpc Client&Server
系列文
從0開始的golang web server30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言