iT邦幫忙

2021 iThome 鐵人賽

DAY 28
0
Modern Web

golang後端入門分享系列 第 28

Day28-Go gRPC(上)

前言

在此之前,我們有介紹 HTTP 網路通訊協定,除了這個通訊方法外,今天要介紹一個 Google 開發的 RPC架構,就是 gRPC,這是你學習 Go 語言後,再發後端時,必定會碰到的。

gRPC

先介紹一下什麼是 gRPC,gRPC 是使用 Protobuf 來進行序列化協定設計,Protobuf 是 Protocol Buffers的簡稱,為二進位制訊息,這使得 Server 端和 Client 端上序列化更下迅速 。
gRPC 也是基於 HTTP/2 設計的, HTTP/2 通訊協定在傳送和接收時都表現的精簡且有效率。

gRPC package

在 Go 語言裡要使用 gRPC 前,你必須先載入套件,

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

這麼一來,就可以用指令來產生 .pb.go 檔,待會會有範例來示範。

Go proto

在你開發 gRPC 的 API 之前,你需要先定義好自己的 Protobuf ,你需要開一個以 .proto 為結尾的檔案,這邊先看一下範例:

syntax = "proto3";

package proto;

service WebServer {  
    rpc GetStudentData (GetStudentDataReq) returns (GetStudentDataRes) {}
}

message GetStudentDataReq {  
    int64  student_id = 1;
    string class = 2;
}

message GetStudentDataRes {  
    string   student_name = 1;
    float64 student_heigh = 2;
    float64 student_weight = 3;
}

先來解釋上述的的程式碼,需要先在 service 裡頭先定義 api,並且包含他的 request 和 response,
而在定義 request 和 response 裡頭的參數時,有比較嚴格的規定,在參數名稱前,須先定義它的型態,也就是說輸入的型態要符合才可以,而在參數後面會有一個 = <數字>,這是有嚴格規定的,必須按照順序來填,第一個就等於 1,以此類推。這樣你就完成了你的 proto擋了。

而剛剛有提到產生 .pb.go 檔,就是以 proto 檔來產出,在專端機下指令:

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

這樣就可以產出你的 .pb.go 檔了。

結語

今天帶來如何在 Go 語言中使用 gRPC 的前置作業,使用起來不會太過複雜,很方便可以建構出基本的架構,下回會帶來 gRPC Server 和 Client。
感謝各位讀者今天的閱讀,希望對你有幫助!


上一篇
Day27- Go with Redis
下一篇
Day29-Go gRPC(下)
系列文
golang後端入門分享30

尚未有邦友留言

立即登入留言