项目简介
本项目是基于Go语言开发的服务器程序,借助mini_cmux
库实现多路复用功能。能在仅监听一个端口的情况下,同时接受HTTP和gRPC访问,将不同类型的请求精准分发到对应的处理逻辑,支持接收并响应HTTP GET请求和处理gRPC服务请求。
项目的主要特性和功能
- 多路复用:运用
mini_cmux
库,实现单个端口同时处理HTTP和gRPC请求,无需为不同协议分别启动服务器实例。 - HTTP服务:可接收并响应HTTP GET请求,如
/get
和/stop
,并返回JSON响应。 - gRPC服务:提供
SayHi
和RequestStop
等gRPC服务方法,支持客户端通过gRPC协议与服务器通信。 - 优雅关闭:监听系统关闭信号(SIGTERM和SIGINT),实现服务器的优雅关闭和资源释放。
- 日志记录:利用日志组件记录服务器的启动、请求接收与处理等关键信息。
安装使用步骤
前提条件
假设你已经下载了本项目的源码文件,并且Go环境已正确配置。
手动部署
- 依赖安装:在项目根目录下执行
go mod tidy
命令安装项目依赖的库。 - 配置参数:打开
conf/config.toml
文件,对服务端与客户端的参数(如ip、端口号、协议等信息)进行配置。 - 编译运行:使用
go build
命令编译项目,然后运行生成的二进制文件。
Docker部署
- 按照官网(https://docs.docker.com/get-started/ )步骤安装Docker,按照官网(https://docs.docker.com/compose/install/ )步骤安装docker-compose。
- 在终端执行以下命令:
bash $ cd $GOPATH/src $ cd mini_cmux/resource $ docker-compose up
K8s部署(采用minikube)
- 按照官网(https://minikube.sigs.k8s.io/docs/start/ )步骤安装minikube,按照官网(https://kubernetes.io/docs/tasks/tools/install-kubectl-linux/ )步骤安装kubectl。
- 在终端输入
minikube start
启动minikube。 - 执行
docker-compose up
生成对应的docker镜像和容器,使用生成的docker镜像进行k8s部署。 - 编辑
deployment.yaml
文件,填入对应的docker镜像名称。 - 在终端执行以下命令:
bash $ kubectl create -f deployment.yaml $ kubectl apply -f service.yaml
- 查看deployment、service、pod的详情:
bash $ kubectl get pods $ kubectl get deploy $ kubectl get service
- 获得服务的
url
:bash $ minikube service --url minicmux
客户端访问
部署成功后,可使用客户端程序或工具(如curl、grpcurl等)向服务器发送请求。使用gRPC客户端时,需确保客户端的gRPC实现与服务器端兼容。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】