项目简介
本项目是基于Go语言的gRPC与gRPC Gateway示例系统,展示了如何利用gRPC进行服务间通信,同时通过gRPC Gateway将gRPC服务转化为HTTP/JSON接口。项目具备Swagger文档生成功能,便于开发者查看和测试API,适用于构建微服务架构或提供RESTful API的场景。
项目的主要特性和功能
- gRPC服务:实现gRPC服务端和客户端,支持高效二进制通信。
- gRPC Gateway:把gRPC服务暴露为HTTP/JSON接口,方便前端或非gRPC客户端调用。
- Swagger文档:自动生成Swagger文档,提供API可视化界面与测试功能。
- 跨平台支持:支持在Windows、Linux等操作系统运行。
- Docker支持:提供Docker镜像构建和容器化部署方案,方便分布式环境运行。
安装使用步骤
环境准备
- 安装Go插件:安装
protocol compiler
Go插件,用于生成*.pb.go
文件,并将GOPATH/bin
加入环境变量中。 - 安装gRPC Gateway插件:安装
grpc-gateway
插件,用于生成*.pb.gw.go
和*.swagger.json
文件。
编译和运行
- 编译proto文件:
- 生成gRPC相关文件
.pb.go
:shell protoc -I%PROTOC_INCLUDE% -I%GOPATH%\src -Ithird_party\googleapis -I. --go_out=plugins=grpc:. api\helloworld.proto
- 生成gateway文件
.pb.gw.go
:shell protoc -I%PROTOC_INCLUDE% -I%GOPATH%\src -Ithird_party\googleapis -I. --grpc-gateway_out=logtostderr=true:. api\helloworld.proto
- 生成Swagger文档
.swagger.json
:shell protoc -I%PROTOC_INCLUDE% -I%GOPATH%\src -Ithird_party\googleapis -I. --swagger_out=logtostderr=true:. api\helloworld.proto
- 运行服务:
- 运行gRPC服务端:
shell go run server\server.go
- 运行gRPC客户端:
shell go run client\client.go
- 运行HTTP网关:
shell go run gateway\gateway.go
Docker部署
- 生成镜像:
shell docker build --target server -t <server_image_name> . docker build --target gateway -t <gateway_image_name> .
- 构建并运行容器:
- 本地运行时,创建容器网络并运行容器:
shell docker network create my-net docker run -d --name server --network my-net -p 8081:8081 <server_image_name> docker run -d --name gateway --network my-net -p 8080:8080 <gateway_image_name> /root/Gateway --server_addr server:8081
- 分布式运行时,提供
server
的IP地址:shell docker run -d --name server -p 8081:8081 <server_image_name> docker run -d --name gateway -p 8080:8080 <gateway_image_name> /root/Gateway --server_addr <server_ip>:8081
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】