gRPC是一个高性能、通用的开源 RPC 框架,其由 Google 主要面向移动应用开发并基于HTTP/2协议标准而设计,基于ProtoBuf(Protocol Buffers) 序列化协议开发,且支持众多开发语言。gRPC 提供了一种简单的方法来精确地定义服务和为 iOS、Android 和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的 TCP 链接次数、节省 CPU 使用、和电池寿命。
1.GRPC模式
简单模式
客户端发起一次请求,服务端响应一个请求
双向数据流模式
客户端和服务端都可以向对方发送数据流,这个时候双方的数据可以同时互相发送
2.nginx作为grpc反向代理原理
3.升级nginx
由于nginx 1.13.10版本之后才支持GRPC,如果nginx版本较低,请升级nginx 版本升级
4.部署go语言环境
GRPC支持很多语言,如C++、C#、GO、JAVA、Node.js、Python、Ruby、Web等。小菜在这里演示用的是GO语言。
进入Go 官方网站下载我们需要的Go 下载包,根据自己的操作系统选择不同的GO包。拷贝下载地址
cd /opt/download
wget https://dl.google.com/go/go1.11.4.linux-amd64.tar.gz
tar -xvf go1.11.4.linux-amd64.tar.gz
mv go /usr/local/
cd /usr/local/
/usr/local/go/bin/go version #查看go版本
echo $PATH
vim /etc/profile
在文件末尾添加环境变量
export GOPATH=/opt/go
export PATH=$PATH:/usr/local/go/bin
source /etc/profile #使配置文件生效
go version #在任何地方输入,输出go版本说明go环境安装好了
5.安装GRPC框架
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
go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
git clone https://github.com/google/go-genproto.git $GOPATH/src/google.golang.org/genproto
git clone https://github.com/golang/sys.git $GOPATH/src/golang.org/x/sys
cd $GOPATH/src/
go install google.golang.org/grpc
测试用例 cd /opt git clone https://github.com/grpc/grpc-go.git