gRPC學習之二:GO的gRPC開發環境準備

程式設計師欣宸發表於2021-08-13

歡迎訪問我的GitHub

這裡分類和彙總了欣宸的全部原創(含配套原始碼):https://github.com/zq2599/blog_demos

gRPC學習系列文章連結

  1. 在CentOS7部署和設定GO
  2. GO的gRPC開發環境準備
  3. 初試GO版gRPC開發
  4. 實戰四類服務方法
  5. gRPC-Gateway實戰
  6. gRPC-Gateway整合swagger

本篇概覽

  • 本文《gRPC學習》系列的第二篇,前文在CentOS7環境裝好了GO,接下來要把gRPC開發環境準備好,總的來說一共三步:

在這裡插入圖片描述

安裝protoc

  1. protoc是編譯工具,安裝方式是下載二進位制檔案,直接複製貼上以下命令執行即可:
mkdir -p $GOPATH/bin \
&& mkdir ~/temp-protoc-download \
&& wget https://github.com/protocolbuffers/protobuf/releases/download/v3.14.0/protoc-3.14.0-linux-x86_64.zip -O ~/temp-protoc-download/protoc.zip \
&& cd ~/temp-protoc-download \
&& unzip protoc.zip \
&& cp ./bin/protoc $GOPATH/bin/ \
&& cd ~/ \
&& rm -rf ~/temp-protoc-download
  1. 執行protoc --version檢查protoc安裝是否成功:
[golang@centos7 ~]$ protoc --version
libprotoc 3.14.0

安裝protoc-gen-go和grpc包遇到的問題

  • 實際證明,用go get命令安裝protoc-gen-go和grpc包的時候經常提示網路錯誤,於是我寫了個shell指令碼,將protoc-gen-go和grpc包的原始碼從GitHub下載下來,在本地編譯構建,達到go get安裝相同的效果;
  • 使用git clone命令下載原始碼比較耗時(檔案數量太多),因此我寫的指令碼是下載對應的原始碼包(zip檔案),再解壓,和git clone效果相同但是耗時減少很多;
  • 因此,接下來的操作是一個指令碼完成protoc-gen-go和grpc包的安裝;

安裝protoc-gen-go和grpc包

  1. 執行以下命令即可完成protoc-gen-go和grpc包的安裝:
curl -o install-grpc.sh \
https://raw.githubusercontent.com/zq2599/blog_demos/master/files/install-grpc.sh \
&& chmod a+x ./install-grpc.sh \
&& ./install-grpc.sh
  1. 控制檯輸出以下資訊,無錯誤,表示安裝成功:
...
install protoc-gen-go
go: downloading google.golang.org/protobuf v1.23.0
install grpc
clear resource
install finish
  1. $GOPATH/bin目錄可見protoc-gen-go:
[golang@centos7 ~]$ cd $GOPATH/bin
[golang@centos7 bin]$ ls
protoc  protoc-gen-go
    • 至此,gRPC開發環境已經準備完畢,下一篇可以開始實戰了;

安裝指令碼一覽

protoc-gen-go和grpc包的安裝過程都在install-grpc.sh中完成,該指令碼內容如下所示,可見都是些很簡單的操作:下載原始碼、解壓、構建

#!/bin/bash

mkdir ~/temp-grpc-install

echo "clear old files"
rm -rf $GOPATH/src/google.golang.org/grpc
rm -rf $GOPATH/src/golang.org/x
rm -rf $GOPATH/src/google.golang.org/protobuf
rm -rf $GOPATH/src/github.com/golang/protobuf
rm -rf $GOPATH/src/google.golang.org/genproto

echo "create directory"
mkdir -p $GOPATH/src/google.golang.org/
mkdir -p $GOPATH/src/golang.org/x
mkdir -p $GOPATH/src/github.com/golang/

echo "1. grpc"
cd ~/temp-grpc-install
wget https://github.com/grpc/grpc-go/archive/master.zip -O grpc-go.zip
unzip grpc-go.zip -d $GOPATH/src/google.golang.org/
cd $GOPATH/src/google.golang.org/ 
mv grpc-go-master grpc

echo "2. x/net"
cd ~/temp-grpc-install
wget https://github.com/golang/net/archive/master.zip -O net.zip
unzip net.zip -d $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/ 
mv net-master net

echo "3. x/text"
cd ~/temp-grpc-install
wget https://github.com/golang/text/archive/master.zip -O text.zip
unzip text.zip -d $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x/ 
mv text-master text

echo "4. protobuf-go"
cd ~/temp-grpc-install
wget https://github.com/protocolbuffers/protobuf-go/archive/master.zip -O protobuf-go.zip
unzip protobuf-go.zip -d $GOPATH/src/google.golang.org/ 
cd $GOPATH/src/google.golang.org/
mv protobuf-go-master protobuf

echo "5. protobuf"
cd ~/temp-grpc-install
wget https://github.com/golang/protobuf/archive/master.zip -O protobuf.zip
unzip protobuf.zip -d $GOPATH/src/github.com/golang/
cd $GOPATH/src/github.com/golang/
mv protobuf-master protobuf

echo "6. go-genproto"
cd ~/temp-grpc-install
wget https://github.com/google/go-genproto/archive/master.zip -O go-genproto.zip
unzip go-genproto.zip -d $GOPATH/src/google.golang.org/
cd $GOPATH/src/google.golang.org/
mv go-genproto-master genproto

echo "7. x/sys"
cd ~/temp-grpc-install
wget https://github.com/golang/sys/archive/master.zip -O sys.zip
unzip sys.zip -d $GOPATH/src/golang.org/x/
cd $GOPATH/src/golang.org/x
mv sys-master sys

echo "install protoc-gen-go"
cd $GOPATH/src/github.com/golang/protobuf/protoc-gen-go/
go build
go install

echo "install grpc"

cd $GOPATH/src/
go install google.golang.org/grpc

echo "clear resource"
cd ~/
rm -rf ~/temp-grpc-install

echo "install finish"

你不孤單,欣宸原創一路相伴

  1. Java系列
  2. Spring系列
  3. Docker系列
  4. kubernetes系列
  5. 資料庫+中介軟體系列
  6. DevOps系列

歡迎關注公眾號:程式設計師欣宸

微信搜尋「程式設計師欣宸」,我是欣宸,期待與您一同暢遊Java世界...
https://github.com/zq2599/blog_demos

相關文章