zoukankan      html  css  js  c++  java
  • gRPC学习之二:GO的gRPC开发环境准备

    欢迎访问我的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

  • 相关阅读:
    Sql 格式化日期
    shape 格式标准
    flex 状态
    flex 特效集
    invalidateProperties
    flex for循环
    关于继承
    win32常见寄存器register
    asm寻址方式
    java jni调用 非托管 dll
  • 原文地址:https://www.cnblogs.com/bolingcavalry/p/15135647.html
Copyright © 2011-2022 走看看