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

2020-07-02  本文已影响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     

上一篇下一篇

猜你喜欢

热点阅读