# Golang Grpc 独立mod微服务框架 **Repository Path**: trident-framework/golang-micro-grpc ## Basic Information - **Project Name**: Golang Grpc 独立mod微服务框架 - **Description**: Golang Grpc 独立mod微服务框架 可运行golang版本【v1.18、v1.19、v1.20、v1.21、v1.22、1.23】 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-21 - **Last Updated**: 2025-10-03 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Golang Grpc 微服务框架 ## 介绍 这是一个基于 Golang 和 Grpc 的微服务框架,支持多个独立的微服务模块(独立mod),每个服务均可独立部署和管理。框架集成了常见的微服务组件,包括服务注册与发现、配置中心、限流、熔断、日志、消息队列、数据库连接等,适用于构建高可用的分布式系统。 ## 软件架构 - **网关服务**:提供统一的 API 入口,支持前端和管理后台的访问。 - **多个微服务**:每个微服务独立运行,拥有自己的 `go.mod` 文件,便于模块化管理和依赖隔离。 - **服务注册与发现**:支持 Consul 和 Nacos。 - **配置中心**:支持 Nacos、Consul、Etcd。 - **数据库**:支持 MySQL、MongoDB、Redis。 - **消息队列**:支持 RabbitMQ。 - **日志**:使用 Zap 实现高性能日志记录。 - **链路追踪**:集成 Jaeger。 - **限流与熔断**:使用 Sentinel。 - **对象存储**:支持 MinIO 和 OSS。 - **搜索**:集成 ElasticSearch。 - **分布式事务**:支持 DTM。 ## 项目结构 - **gateway-api**: API 网关,提供对外的 HTTP 接口。 - **services/user-service**: 用户服务,提供用户管理功能。 - **services/transfer-service**: 转账服务,提供转账相关的业务逻辑。 ``` golang-micro-grpc/ ├── gateway-api/ # 网关服务 | ├── config/ # 配置目录 | ├── constants/ # 常量目录 | ├── controllers/ # 控制器目录 | ├── logs/ # 日志目录 | ├── middlewares/ # 中间件目录 | ├── routers/ # 路由目录 | ├── static/ # 静态目录 | ├── tools/ # 工具目录 | ├── deploy.yaml # k8s部署文件 | ├── docker_compose_Jenkinsfile # docker-compose CICD文件 | ├── docker-compose.yaml # docker-compose部署文件 | ├── Dockerfile # 构建镜像文件 | ├── k8s_Jenkinsfile # k8s CICD文件 | ├── kubesphere_Jenkinsfile # kubesphere CICD文件 | ├── go.mod | ├── go.sum | └── main.go # 主文件 ├── services/ | ├── user-service/ # 用户服务 | | ├── config/ # 配置目录 | | ├── constants/ # 常量目录 | | ├── handler/ # 处理器目录 | | ├── middlewares/ # 中间件目录 | | ├── logs/ # 日志目录 | | ├── models/ # 模型目录 | | ├── proto/ # proto目录 | | ├── tools/ # 工具目录 | | ├── deploy.yaml # k8s部署文件 | | ├── docker_compose_Jenkinsfile # docker-compose CICD文件 | | ├── docker-compose.yaml # docker-compose部署文件 | | ├── Dockerfile # 构建镜像文件 | | ├── k8s_Jenkinsfile # k8s CICD文件 | | ├── kubesphere_Jenkinsfile # kubesphere CICD文件 | | ├── go.mod | | ├── go.sum | | └── main.go # 主文件 | ├── common-service/ # 公共服务 | | ├── config/ # 配置目录 | | ├── constants/ # 常量目录 | | ├── handler/ # 处理器目录 | | ├── middlewares/ # 中间件目录 | | ├── logs/ # 日志目录 | | ├── models/ # 模型目录 | | ├── proto/ # proto目录 | | ├── tools/ # 工具目录 | | ├── deploy.yaml # k8s部署文件 | | ├── docker_compose_Jenkinsfile # docker-compose CICD文件 | | ├── docker-compose.yaml # docker-compose部署文件 | | ├── Dockerfile # 构建镜像文件 | | ├── k8s_Jenkinsfile # k8s CICD文件 | | ├── kubesphere_Jenkinsfile # kubesphere CICD文件 | | ├── go.mod | | ├── go.sum | | └── main.go # 主文件 | ├── account-service/ # 账户服务 | | ├── config/ # 配置目录 | | ├── constants/ # 常量目录 | | ├── handler/ # 处理器目录 | | ├── middlewares/ # 中间件目录 | | ├── logs/ # 日志目录 | | ├── models/ # 模型目录 | | ├── proto/ # proto目录 | | ├── tools/ # 工具目录 | | ├── deploy.yaml # k8s部署文件 | | ├── docker_compose_Jenkinsfile # docker-compose CICD文件 | | ├── docker-compose.yaml # docker-compose部署文件 | | ├── Dockerfile # 构建镜像文件 | | ├── k8s_Jenkinsfile # k8s CICD文件 | | ├── kubesphere_Jenkinsfile # kubesphere CICD文件 | | ├── go.mod | | ├── go.sum | | └── main.go # 主文件 └── README.md ``` ## 安装教程 1. 安装依赖: ```bash go mod tidy go get github.com/alibabacloud-go/dysmsapi-20170525/v3@v3.0.6 go get github.com/dtm-labs/client@v1.18.7 go get github.com/nacos-group/nacos-sdk-go@v1.1.4 go get github.com/opentracing/opentracing-go@v1.2.0 go get github.com/rabbitmq/amqp091-go@v1.10.0 go get github.com/spf13/viper@v1.13.0 go get go.etcd.io/etcd/api/v3@v3.5.9 go get go.etcd.io/etcd/client/v3@v3.5.9 go get go.mongodb.org/mongo-driver@v1.11.6 go get google.golang.org/grpc@v1.58.0 go get google.golang.org/protobuf@v1.34.1 go get gopkg.in/yaml.v2@v2.4.0 go get gorm.io/driver/mysql@v1.5.7 go get gorm.io/gorm@v1.25.12 go get github.com/mojocn/base64Captcha go get github.com/hashicorp/consul/api go get github.com/minio/minio-go/v7 go get github.com/go-redis/redis/v8 go get github.com/alibaba/sentinel-golang/api go get github.com/dgrijalva/jwt-go go get github.com/olivere/elastic/v7 go get github.com/aliyun/aliyun-oss-go-sdk/oss go get github.com/hunterhug/go_image ``` 2. 配置服务: - 修改 `config/app.yml` 文件以适配当前环境。 - 配置 `nacos`, `consul`, `etcd`, `redis`, `mysql`, `minio`, `oss`, `rabbitmq`, `sentinel`, `es`, `sms`, `email` 等相关参数。 3. 构建并运行服务: - 使用 Docker 构建: ```bash docker build -t gateway-api . docker run -d -p 9501:9501 gateway-api ``` - 或者直接运行: ```bash go run main.go --env dev ``` ## 使用说明 ### 网关服务 API 示例 - 前端接口: - `192.168.32.1:9501/front/v1/index/frontWelcome` - `192.168.32.1:9501/front/v2/index/frontWelcome` - 管理接口: - `192.168.32.1:9501/mgr/v1/index/frontWelcome` - `192.168.32.1:9501/mgr/v2/index/frontWelcome` ### 微服务功能 - **Account 服务**:提供账户管理功能,包括添加、删除、编辑账户,角色分配,权限管理等。 - **User 服务**:提供用户管理功能,包括注册、登录、用户信息管理、用户相册等。 - **Banner 服务**:提供横幅管理功能,包括添加、删除、编辑、查询横幅。 - **Demo 服务**:提供分布式事务示例,包括 Saga、TCC、XA 等模式。 ### RabbitMQ 消费者示例 - `simpleConsumer`: 简单模式消费者 - `workConsumer`: 工作队列模式消费者 - `fanoutConsumer`: 广播模式消费者 - `directConsumer`: 直连模式消费者 - `topicConsumer`: 主题模式消费者 - `ackConsumer`: 确认模式消费者 - `retryConsumer`: 重试模式消费者 - `deadConsumer`: 死信队列消费者 - `delayConsumer`: 延迟队列消费者 - `priorityConsumer`: 优先级队列消费者 - `rejectConsumer`: 拒绝消息消费者 - `backupConsumer`: 备份消费者 ## 参与贡献 1. Fork 本仓库 2. 新建 Feat_xxx 分支 3. 提交代码 4. 新建 Pull Request ## 特技 1. 使用 `Readme_XXX.md` 支持多语言文档,例如 `Readme_en.md`, `Readme_zh.md` 2. Gitee 官方博客 [blog.gitee.com](https://blog.gitee.com) 3. 探索 Gitee 上的优秀开源项目 [https://gitee.com/explore](https://gitee.com/explore) 4. Gitee 最有价值开源项目 [GVP](https://gitee.com/gvp) 5. Gitee 使用手册 [https://gitee.com/help](https://gitee.com/help) 6. Gitee 封面人物展示 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)