:一个高性能、开源的通用 RPC 框架,基于标准的 进行传输,默认采用 序列化结构化数据。本文将介绍如何从零搭建一个 的 gRPC 服务。
本文所述的搭建环境基于 滴滴云 售卖的 CentOS 7.2 标准镜像
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
出现以下信息则表明安装成功
$ 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
$ cd protobuf - 3.6.1 /
$ . / configure && make && sudo make install
$ go get - u - v github . com / golang / protobuf / protoc - gen - go
网络环境允许的同学安装 gRPC 非常方便,直接执行以下命令即可安装完成:
$ go get - u - v google . golang . org / grpc
如果出现以上问题,则可以按照下面的方式进行安装:
$ mkdir - p $ GOPATH / src / google . golang . org /
$ cd $ GOPATH / src / google . golang . org /
$ go install google . golang . org / grpc
如果在安装过程中出现以上错误,表明 gRPC 依赖的库缺失,则需按照错误提示逐步补全安装其依赖库
golang.org/x/
在
github.com/golang/
下均有 mirror,利用这个我们可以以 GitHub 为跳板来安装相应依赖。执行以下脚本则可以自动完成
golang.org/x/*
的安装
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 的安装,自此环境相关的准备工作完成。
以该
helloworld.proto
文件为例
这样编译出来结果只是将
.proto
文件中描述的结构与方法翻译成了 Golang 而已,如果需要将其以 gRPC 的方式提供服务的话,需需要在编译时指定插件
在当前目录下创建一个
client.go
,一个
server.go
文件,目录结构如下:
打开两个会话窗口,在其中之一执行:
$ go run server . go
在另一个会话窗口运行:
$ go run client . go gRPC
2018 / 12 / 09 18 : 05 : 22 Greeting : Hello gRPC
自此一个简单的 gRPC 服务就搭建起来了。
同样是上面的
.proto
文件,我们想要为其增加
鉴权
与
加密传输
的能力
$ openssl genrsa - out server . key 2048
$ openssl req - x509 - key server . key - out server . pem
目录结构为:
打开两个会话窗口,在其中之一执行:
$ go run server . go
在另一个会话窗口运行:
$ go run client . go tls _ gRPC
2018 / 12 / 09 21 : 19 : 07 Greeting : Hello tls _ gRPC
由于
golang.org/x/oauth2
中依赖了
cloud.google.com/go/compute/metadata
,其在 GitHub 上的 mirror 地址为
github.com/googleapis/google-cloud-go
,于是我们需要按照之前的方式安装该依赖。
打开两个会话窗口,在其中之一执行:
$ 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/,如需转载,请注明出处,否则将追究法律责任。