littlebot
Published on 2025-04-03 / 0 Visits
0

【源码】基于Go语言的gRPC与gRPC Gateway示例项目

项目简介

本项目是基于Go语言的gRPC与gRPC Gateway示例系统,展示了如何利用gRPC进行服务间通信,同时通过gRPC Gateway将gRPC服务转化为HTTP/JSON接口。项目具备Swagger文档生成功能,便于开发者查看和测试API,适用于构建微服务架构或提供RESTful API的场景。

项目的主要特性和功能

  1. gRPC服务:实现gRPC服务端和客户端,支持高效二进制通信。
  2. gRPC Gateway:把gRPC服务暴露为HTTP/JSON接口,方便前端或非gRPC客户端调用。
  3. Swagger文档:自动生成Swagger文档,提供API可视化界面与测试功能。
  4. 跨平台支持:支持在Windows、Linux等操作系统运行。
  5. Docker支持:提供Docker镜像构建和容器化部署方案,方便分布式环境运行。

安装使用步骤

环境准备

  1. 安装Go插件:安装protocol compiler Go插件,用于生成*.pb.go文件,并将GOPATH/bin加入环境变量中。
  2. 安装gRPC Gateway插件:安装grpc-gateway插件,用于生成*.pb.gw.go*.swagger.json文件。

编译和运行

  1. 编译proto文件:
  2. 生成gRPC相关文件.pb.goshell protoc -I%PROTOC_INCLUDE% -I%GOPATH%\src -Ithird_party\googleapis -I. --go_out=plugins=grpc:. api\helloworld.proto
  3. 生成gateway文件.pb.gw.goshell protoc -I%PROTOC_INCLUDE% -I%GOPATH%\src -Ithird_party\googleapis -I. --grpc-gateway_out=logtostderr=true:. api\helloworld.proto
  4. 生成Swagger文档.swagger.jsonshell protoc -I%PROTOC_INCLUDE% -I%GOPATH%\src -Ithird_party\googleapis -I. --swagger_out=logtostderr=true:. api\helloworld.proto
  5. 运行服务:
  6. 运行gRPC服务端: shell go run server\server.go
  7. 运行gRPC客户端: shell go run client\client.go
  8. 运行HTTP网关: shell go run gateway\gateway.go

Docker部署

  1. 生成镜像: shell docker build --target server -t <server_image_name> . docker build --target gateway -t <gateway_image_name> .
  2. 构建并运行容器:
  3. 本地运行时,创建容器网络并运行容器: 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
  4. 分布式运行时,提供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】