從零開始搭建 gRPC 服務 – Golang 篇(一)
:一個高效能、開源的通用 RPC 框架,基於標準的 進行傳輸,預設採用 序列化結構化資料。本文將介紹如何從零搭建一個 的 gRPC 服務。
準備工作
本文所述的搭建環境基於 滴滴雲 售賣的 CentOS 7.2 標準映象
安裝 Golang
下載最新版本的 Golang 安裝包
gRPC 依賴於 1.6 以上版本,如果對其他版本有訴求可以在
選擇下載
$ wget https : //dl.google.com/go/go1.11.2.linux-amd64.tar.gz
解壓安裝包
$ tar zxvf go1 . 11.2.linux - amd64 . tar . gz
配置環境變數
檢查安裝結果
$ go version && go env
出現以下資訊則表明安裝成功
安裝 Protocol Buffers
下載最新版本的 Protobuf 安裝包
$ wget https : //github.com/protocolbuffers/protobuf/releases/download/v3.6.1/protobuf-all-3.6.1.tar.gz
解壓安裝包
$ tar zxvf protobuf - all - 3.6.1.tar.gz
安裝 Protobuf
$ cd protobuf - 3.6.1 /
$ . / configure && make && sudo make install
安裝 Protobuf Golang 外掛
$ go get - u - v github . com / golang / protobuf / protoc - gen - go
檢查安裝結果
安裝 gRPC
網路環境允許的同學安裝 gRPC 非常方便,直接執行以下命令即可安裝完成:
$ go get - u - v google . golang . org / grpc
如果出現以上問題,則可以按照下面的方式進行安裝:
在 GOPATH 下建立 google.golang.org 目錄
$ mkdir - p $ GOPATH / src / google . golang . org /
$ cd $ GOPATH / src / google . golang . org /
下載 gRPC 最新程式碼並解壓
安裝 gRPC
$ go install google . golang . org / grpc
如果在安裝過程中出現以上錯誤,表明 gRPC 依賴的庫缺失,則需按照錯誤提示逐步補全安裝其依賴庫
安裝 golang.org/x/*
golang.org/x/
在
github.com/golang/
下均有 mirror,利用這個我們可以以 GitHub 為跳板來安裝相應依賴。執行以下指令碼則可以自動完成
golang.org/x/*
的安裝
安裝 google.golang.org/genproto
google.golang.org/genproto
在GitHub 上的 mirror 地址為:
github.com/google/go-genproto
$ wget https : //github.com/google/go-genproto/archive/master.tar.gz -O ${GOPATH}/src/google.golang.org/genproto.tar.gz
$ cd $ { GOPATH } / src / google . golang . org && tar zxvf genproto . tar . gz && mv go - genproto - master genproto
依賴安裝完畢後再次執行
go install google.golang.org/grpc
即可完成 gRPC 的安裝,自此環境相關的準備工作完成。
構建一個簡單的 gRPC 服務
以該
helloworld.proto
檔案為例
編譯 .proto 檔案
這樣編譯出來結果只是將
.proto
檔案中描述的結構與方法翻譯成了 Golang 而已,如果需要將其以 gRPC 的方式提供服務的話,需需要在編譯時指定外掛
編寫 client.go 與 server.go
在當前目錄下建立一個
client.go
,一個
server.go
檔案,目錄結構如下:
編寫 client.go
編寫 server.go
執行 gRPC 服務
開啟兩個會話視窗,在其中之一執行:
$ go run server . go
在另一個會話視窗執行:
$ go run client . go gRPC
2018 / 12 / 09 18 : 05 : 22 Greeting : Hello gRPC
自此一個簡單的 gRPC 服務就搭建起來了。
構建一個安全的 gRPC 服務
同樣是上面的
.proto
檔案,我們想要為其增加
鑑權
與
加密傳輸
的能力
增加 TLS
生成服務端公私鑰
$ openssl genrsa - out server . key 2048
$ openssl req - x509 - key server . key - out server . pem
目錄結構為:
改寫 server.go
改寫 client.go
執行 gRPC 服務
開啟兩個會話視窗,在其中之一執行:
$ go run server . go
在另一個會話視窗執行:
$ go run client . go tls _ gRPC
2018 / 12 / 09 21 : 19 : 07 Greeting : Hello tls _ gRPC
增加 OAuth2 鑑權
改寫 server.go
改寫 client.go
由於
golang.org/x/oauth2
中依賴了
cloud.google.com/go/compute/metadata
,其在 GitHub 上的 mirror 地址為
github.com/googleapis/google-cloud-go
,於是我們需要按照之前的方式安裝該依賴。
執行 gRPC 服務
開啟兩個會話視窗,在其中之一執行:
$ go run server . go
在另一個會話視窗執行:
$ go run client . go oauth2_tls _ gRPC
2018 / 12 / 09 21 : 27 : 56 Greeting : Hello oauth2_tls _ gRPC
自此一個安全的 gRPC 服務就搭建起來了。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31559758/viewspace-2284763/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 從零開始搭建 gRPC 服務 - Golang 篇(二)RPCGolang
- 從零開始搭建一個mock服務Mock
- 從零開始學golang之udpGolangUDP
- 從零開始學golang之 PrimGolang
- 從零開始學golang之TCPGolangTCP
- 從零開始釋出一個ArcGIS Server地圖服務Server地圖
- M1版Mac從零開始搭建Golang開發環境MacGolang開發環境
- 從零開始寫專案第一篇【搭建環境】
- 從零開始搭建一個 hexo 部落格。Hexo
- 從零開始搭建一個vue專案Vue
- 從零開始搭建React應用(一)——基礎搭建React
- Git/小白從零開始篇Git
- 從零開始學golang之DijkstraGolang
- hyperf從零開始構建微服務(一)——構建服務提供者微服務
- 從零開始用 Flask 搭建一個網站(一)Flask網站
- 從零開始搭建一個舒適的ubuntuUbuntu
- VUE從零開始環境搭建Vue
- 從零開始搭建webpack應用Web
- 從零開始搭建腳手架
- 從零開始開發和搭建直播平臺-教程彙總篇
- 從零開始學typescript構建一個rest風格web服務TypeScriptRESTWeb
- 用 Golang 構建 gRPC 服務GolangRPC
- 從零開始學golang之gin加上gormGolangORM
- Android從零開始(第三篇)MVP架構搭建AndroidMVP架構
- 從零開始搭建部落格系列
- 從零開始寫一個微前端框架-沙箱篇前端框架
- PHP-從零開始使用Solr搜尋引擎服務(上)PHPSolr
- PHP-從零開始使用Solr搜尋引擎服務(下)PHPSolr
- 從零開始的Android新專案(1):架構搭建篇Android架構
- 從零開始學golang之Dynamic programming --LCSGolang
- 從零講解搭建一個NIO訊息服務端服務端
- 從零道一搭建Turbo分散式服務框架實戰分散式框架
- 從零搭建一個基於Istio的服務網格
- Golang從零開始(一):安裝和開發工具VSCode配置GolangVSCode
- 十分鐘學會Golang開發gRPC服務GolangRPC
- 從零開始搭建前後端分離論壇 一後端
- 從零開始實現放置遊戲(一):整體框架搭建遊戲框架
- flutter之從零開始搭建(一)之 BottomNavigationBarFlutterNavigation