go版本gRPC入門

2021-08-07 03:06:20 字數 3264 閱讀 5223

本文通過乙個簡單的示例,了解如何在go中使用grpc。

使用命令列安裝

* 使用以下命令安裝grpc:

$ go get google.golang.org/grpc

獲取編譯器外掛程式protoc-gen-go,並將其安裝在$gobin路徑中,預設為$gopath/bin

5)必須設定好$path環境變數,協議編譯器protoc才能找到它。將此命令$ export path=$path:$gopath/bin加入到~/.profile檔案的最後,儲存,用source ~/.profile使檔案生效。

通過go get google.golang.org/grpc獲取的grpc**中還包含示例。這個例項可以在以下路徑中找到:

$gopath/src/google.golang.org/grpc/examples

切換到示例目錄:

$ cd

$gopath/src/google.golang.org/grpc/examples/helloworld

.proto檔案中定義了grpc服務,用於生成相應的.pb.go檔案。該.pb.go檔案是通過使用協議編譯器protoc編譯.proto檔案生成的。

在樣例中,該helloworld.pb.go檔案已經被生成(通過編譯helloworld.proto),並且可以在這個目錄中找到:

$gopath/src/google.golang

.org/grpc/examples/helloworld/helloworld

helloworld.pb.go檔案包含:

* 生成的客戶端和伺服器**。

* 用於填充,序列化和檢索我們hellorequest和helloreply訊息型別的**。

使用go run命令和執行伺服器和客戶端**。

在examples目錄中:

執行:$ go run greeter_server/main.go

開啟另乙個的終端,到相同的目錄下:

執行:$ go run greeter_client/main.go

你會看到greeting: hello world客戶端的輸出。

恭喜!您剛剛使用grpc執行了客戶端 - 伺服器應用程式。

現在我們來看看如何使用伺服器上的乙個額外的方法來更新應用程式,以供客戶端呼叫。我們的grpc服務是使用protocol buffer定義的; 您可以在.proto檔案中找到關於定義服務的更多資訊。現在,您需要知道的是,伺服器和客戶端「stub」都有乙個sayhello的rpc方法,該方法從客戶端獲取hellorequest引數並從伺服器返回乙個helloreply引數,該方法的定義如下:

// the greeting service definition.

service greeter

}// the request message containing the user's name.

message hellorequest

// the response message containing the greetings

message helloreply

更新這個方法,使greeter服務有兩種方法。確保在同乙個例子中修改,如$gopath/src/google.golang.org/grpc/examples/helloworld目錄

// the greeting service definition.

service greeter

// sends another greeting

rpc sayhelloagain (hellorequest) returns (helloreply) {}

}// the request message containing the user's name.

message hellorequest

// the response message containing the greetings

message helloreply

接下來,我們需要更新應用程式使用的grpc**,以便能使用定義的新服務。在($gopath/src/google.golang.org/grpc/examples/helloworld)這個目錄,執行以下命令,將重新生成helloworld.pb.go:

$ protoc -i helloworld/ helloworld/helloworld.proto --go_out=plugins=grpc:helloworld
func (s *server) sayhelloagain(ctx context.context, in *pb.hellorequest) (*pb.helloreply, error) , nil

}

編輯greeter_client/main.go將以下**新增到主函式的最後。

r, err = c.sayhelloagain(context.background(), &pb.hellorequest)

if err != nil

log.printf("greeting: %s", r.message)

$ go run greeter_server/main.go
$ go run greeter_client/main.go
$ go run greeter_client/main.go

greeting: hello world

greeting: hello again world

參考文章:

官方英文文件:

官方中文文件:

go語言 grpc入門

go get google.golang.org grpc1.編寫.proto描述檔案 hello.proto syntax proto3 package proto message string service helloservice2.使用protoc工具生成相應的go 生成的 與porto描...

GRPC基礎入門

專案中要使用rpc協議框架來實現兩個系統之間的介面呼叫。a系統呼叫b系統的相應介面,因為考慮到http請求會包含更多冗餘資訊,造成請求過大,因此選用了rpc眾多框架中的grpc。grpc是google開源的rpc框架,目前版本1.0.0,看jar包引入包括netty與okhttp,同時序列化中使用的...

gRPC入門小結

首先要知道rpc是什麼 remote procedure call的簡稱,翻譯成中文就是遠端過程呼叫。rpc主要是為了解決以下倆個問題 grpc 一開始由 google 開發,是一款語言中立 平台中立 開源的遠端過程呼叫 rpc 系統,g有global的意思 在grpc裡客戶端應用可以像呼叫本地物件...