1. 程式人生 > >flyskyhunter的專欄

flyskyhunter的專欄

       以前在生產做過 java 版本 grpc 應用,伺服器是用java 版本,也開發了java-client sdk 版本,主要是使用protobuffer 雙向stream

後面本來打算作golang 版本和nodejs版本,由於精力和時間,就沒有深入推進了,最近在用golang 作相關開發,作為技術預研,就研究了以下go-grpc。

     protobuffer 生存程式碼最大問題是環境的,pb 依賴庫都是google內部庫,尤其在fq 不成功,域名解析失敗的時候,我們使用

go get -u -v  code.repository 無法成功下載程式碼,所以需要手動下載所有相關環境到gopath 所在 google.golang.org/golang.org 環境中,配置專案需要庫包。

下載protobuf 依賴包

 go get -u github.com/golang/protobuf/proto  go get -u github.com/golang/protobuf/protoc-gen-go

下載protoc 執行檔案(本機是unbuntu 64機)

   https://github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protoc-3.6.1-linux-x86_64.zip

  解壓之後mv 到 goroot/bin 下面,加入到執行環境裡面

  goroot 下面有 protoc  protoc-gen-go

 由於grpc 依賴

 fq 不可用:

或者 fq 可用

  go get -u google.golang.org/grpc

 go get -u golang.org/x/net

其他缺少依賴,基本上都是按照上面思路,繼續新增,直到沒有缺包為止。

前面準備環境差不多了,後面定義 *.proto,並且生成  *.pb.go 檔案。撰寫ptoto 比較簡單,參與規範就可以。

protoc --go_out=plugins=grpc:. *.proto   生成 *.pb.go

第三部分,搭建一個 client 和server 來載入我們 pb.go。

後記:其實 go-grpc 相對來比較簡潔和簡單。