美文网首页
grpc安装以及在go中的简单应用

grpc安装以及在go中的简单应用

作者: 卢纪超 | 来源:发表于2020-07-02 16:25 被阅读0次

    1.golang语言的安装

    为了简化安装过程,使用yum方式进行快速安装

    1.1通过命令查看当前yum中golang的版本信息: 

    yum info golang

    yum中golang信息查看

    1.2 使用yum命令安装golang:  

    yum install golang

    1.3 验证安装成功的信息

    go env

    1.4 在环境变量中增加golang的GOROOT和GOPATH路径,将GOPATH设置成项目的实际路径

    vi /etc/profile

    在文件末尾添加如下

    # GOROOT

    export GOROOT=/usr/lib/golang

    # GOPATH

    export GOPATH=/root/work/programmer/go/gopath/

    # GOPATH bin

    export PATH=$PATH:$GOROOT/bin:$GOPATH/bin

     配置生效:

    source /etc/profile

    验证生效后的配置

    2.安装grpc

    官方安装命令: go get -u google.golang.org/grpc

    由于google无法访问,虽然github上有grpc的代码,但是包依赖没有修改,所以不能go get安装,需要手动安装。

    git clone https://github.com/grpc/grpc-go.git $GOPATH/src/google.golang.org/grpc

    git clone https://github.com/golang/net.git $GOPATH/src/golang.org/x/net

    git clone https://github.com/golang/text.git $GOPATH/src/golang.org/x/text

    git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys

    git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto

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

    go get -u github.com/golang/protobuf/protoc-gen-go    timeout解决之道:

    首先给源码准备一个正确的地方 :

    mkdir -p $GOPATH/src/google.golang.org  

    cd $GOPATH/src/google.golang.org 

    克隆源码 https://gitee.com/lengaoxingchen/protobuf/protoc-gen-go 

    cd $GOPATH/src/

    go install google.golang.org/grpc

    $GOPATH替换为环境变量的实际路径。

    3.编译.proto文件

    protoc --go_out=plugins=grpc:. x.proto(以后会用到)

    4.初体验grpc

    在前面安装好的grpc的包中有需要官方demo,下面以helloworld为例:

    $ cd $GOPATH/src/google.golang.org/grpc/examples/helloworld

    greeter_client:grpc客户端代码

    greeter_server:grpc服务端代码

    helloworld:.proto文件所在位置以及protoc生成的文件的路径

    syntax = "proto3";//声明proto的版本 只能 是3,才支持 grpc //声明 包名 package pro; //声明grpc服务 service Greeter { /* 声名一个 sayhello 接口 它的参数 是 HelloRequest 它的返回参数是 HelloReply */ rpc SayHello (HelloRequest) returns (HelloReply) {} } //参数结构 message HelloRequest { string name = 1; } //参数结构 message HelloReply { string message = 1; } //protoc --go_out=plugins=grpc:. helloworld.proto

    运行服务端:

    [root@iZ2zegaforshlunfo6xw8qZ helloworld]#  go run server greeter_server/main.go

    2020/06/23 16:37:04 Received: world

    运行客户端

    [root@iZ2zegaforshlunfo6xw8qZ helloworld]# go run greeter_client/main.go

    2020/06/23 16:37:04 Greeting: Hello world

    上面在运行的时候会报(timeout):

    [root@iZ2zegaforshlunfo6xw8qZ helloworld]# go run greeter_client/main.go

    go: golang.org/x/oauth2@v0.0.0-20180821212333-d2e6202438be: unrecognized import path "golang.org/x/oauth2" (https fetch: Get https://golang.org/x/oauth2?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)

    解决之道:

    https://goproxy.io 是一个goproxy.io这个开源项目提供的公开代理服务 ,下面是官网给的参考意见

    如果您使用的 Go 版本是 1.13 及以上 (推荐)

    go env -w GO111MODULE=on

     go env -w GOPROXY=https://goproxy.io,direct

    # 设置不走 proxy 的私有仓库,多个用逗号相隔(可选) 

    go env -w GOPRIVATE=*.corp.example.com

     # 设置不走 proxy 的私有组织(可选) go env -w GOPRIVATE=example.com/org_name

    设置完上面几个环境变量后,您的 go 命令将从公共代理镜像中快速拉取您所需的依赖代码了。

    如果您使用的 Go 版本是 1.12 及以下Bash (Linux or macOS)       

    # 启用 Go Modules 功能 

    export GO111MODULE=on 

    # 配置 GOPROXY 环境变量

     export GOPROXY=https://goproxy.io     

    相关文章

      网友评论

          本文标题:grpc安装以及在go中的简单应用

          本文链接:https://www.haomeiwen.com/subject/qkzgtktx.html