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

【源码】基于Go语言的HTTP与gRPC多协议服务系统

项目简介

本项目是基于Go语言开发的服务器程序,借助mini_cmux库实现多路复用功能。能在仅监听一个端口的情况下,同时接受HTTP和gRPC访问,将不同类型的请求精准分发到对应的处理逻辑,支持接收并响应HTTP GET请求和处理gRPC服务请求。

项目的主要特性和功能

  1. 多路复用:运用mini_cmux库,实现单个端口同时处理HTTP和gRPC请求,无需为不同协议分别启动服务器实例。
  2. HTTP服务:可接收并响应HTTP GET请求,如/get/stop,并返回JSON响应。
  3. gRPC服务:提供SayHiRequestStop等gRPC服务方法,支持客户端通过gRPC协议与服务器通信。
  4. 优雅关闭:监听系统关闭信号(SIGTERM和SIGINT),实现服务器的优雅关闭和资源释放。
  5. 日志记录:利用日志组件记录服务器的启动、请求接收与处理等关键信息。

安装使用步骤

前提条件

假设你已经下载了本项目的源码文件,并且Go环境已正确配置。

手动部署

  1. 依赖安装:在项目根目录下执行go mod tidy命令安装项目依赖的库。
  2. 配置参数:打开conf/config.toml文件,对服务端与客户端的参数(如ip、端口号、协议等信息)进行配置。
  3. 编译运行:使用go build命令编译项目,然后运行生成的二进制文件。

Docker部署

  1. 按照官网(https://docs.docker.com/get-started/ )步骤安装Docker,按照官网(https://docs.docker.com/compose/install/ )步骤安装docker-compose。
  2. 在终端执行以下命令: bash $ cd $GOPATH/src $ cd mini_cmux/resource $ docker-compose up

K8s部署(采用minikube)

  1. 按照官网(https://minikube.sigs.k8s.io/docs/start/ )步骤安装minikube,按照官网(https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ )步骤安装kubectl。
  2. 在终端输入minikube start启动minikube。
  3. 执行docker-compose up生成对应的docker镜像和容器,使用生成的docker镜像进行k8s部署。
  4. 编辑deployment.yaml文件,填入对应的docker镜像名称。
  5. 在终端执行以下命令: bash $ kubectl create -f deployment.yaml $ kubectl apply -f service.yaml
  6. 查看deployment、service、pod的详情: bash $ kubectl get pods $ kubectl get deploy $ kubectl get service
  7. 获得服务的urlbash $ minikube service --url minicmux

客户端访问

部署成功后,可使用客户端程序或工具(如curl、grpcurl等)向服务器发送请求。使用gRPC客户端时,需确保客户端的gRPC实现与服务器端兼容。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】