vlambda博客
学习文章列表

Go语言gRPC+gRPC Getway开发环境配置

Go语言gRPC+gRPC Getway开发环境配置

——————————————

专注编程技术


01

需求分析

假定我们有一个项目需求,希望用RPC作为内部API的通讯,同时也想对外提供相应的Restful API,写两套会太繁琐。于是我们想到了Grpc以及Grpc Gateway,这就是我们所需要的:


Grpc以及Grpc Gateway
图片来源:https://eddycjy.com/posts/go/grpc-gateway/2018-02-23-install/#示例代码


02

开发环境配置

在正式开始我们的Grpc+Grpc Gateway实践前,我们需要先配置好我们的开发环境。首先第一步是配置Go语言代理GOPROXY(教程:),因为在配置开发环境时需要使用go get命令下载如下的框架、工具等,而如果不配置Go语言代理,则下载速度极慢甚至失败。Grpc+Grpc Gateway需要用到的框架和工具等如下:
  • Grpc

  • Protoc Plugin

  • Protocol Buffers

  • Grpc-gateway


  • Grpc
A high performance, open-source universal RPC framework,也就是Grpc是一个Google的高性能、开源的通用RPC框架,具有以下特性:
  • 强大的IDL,使用Protocol Buffers作为数据交换的格式,支持v2、v3(推荐v3)
  • 跨语言、跨平台,也就是Grpc支持多种平台和语言
  • 支持HTTP2,双向传输、多路复用、认证等

下载安装:(windows和linux环境)

go get -u google.golang.org/grpc
  • Protoc Plugin

是一个编译器插件,我们需要用到该插件去生成相应的pb文件。

下载安装:(windows和linux环境

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

如果需要的话,则需要将生成的protoc-gen-go.exe(windows)或者protoc-gen-go(linux)二进制文件设置成全局命令参数,例如linux环境:

mv /usr/local/go/path/bin/protoc-gen-go /usr/local/go/bin/
  • Protocol Buffers

Protocol Buffers是Google推出的一种数据描述语言,支持多语言、多平台,它是一种二进制的格式,总得来说就是更小、更快、更简单、更灵活,目前分别有v2、v3的版本,我们推荐使用v3。

  • https://developers.google.com/protocol-buffers/docs/proto

  • https://developers.google.com/protocol-buffers/docs/proto3

下载安装:

linux环境:(可以手动更改版本)wget https://github.com/google/protobuf/releases/download/v3.5.1/protobuf-all-3.5.1.zipunzip protobuf-all-3.5.1.zipcd protobuf-3.5.1/./configuremakemake install
检查是否安装成功:protoc --version
如果报错:protoc: error while loading shared libraries: libprotobuf.so.15: cannot open shared object file: No such file or directory则执行:ldconfig
windows环境:https://github.com/google/protobuf/releases // 下载并编译、安装或者直接下载编译好额版本go get github.com/golang/protobuf/proto // golang的protobuf库文件
网上的一个教程实例:https://blog.csdn.net/qq_36025814/article/details/108538590
检查是否安装成功:protoc --version
protoc使用:查看帮助文档:protoc --help
两个示例:(proto文件里的option go_package选项对pb文件生成路径有影响)在proto文件上层目录运行命令:protoc -I . -I./pbfile -I./proto --go_out=plugins=grpc:. --grpc-gateway_out=logtostderr=true:. ./proto/vss_record_manager.proto在proto文件当前层运行命令:protoc -I . --go_out=plugins=grpc:. --grpc-gateway_out=logtostderr=true:. stream.proto

  • Grpc-gateway

Grpc-gateway是protoc的一个插件。它读取gRPC服务定义,并生成一个反向代理服务器,将RESTful JSON API转换为gRPC。此服务器是根据gRPC定义中的自定义选项生成的。

下载安装:

go get -u github.com/grpc-ecosystem/grpc-gateway/protoc-gen-grpc-gateway

如果需要的话,将protoc-gen-grpc-gateway.exe(windows环境)或者protoc-gen-grpc-gateway(linux环境)二进制文件添加到全局变量。


--The End--


程序员编程微刊

专注编程技术

快和身边的小伙伴们一起关注吧~