# Golang Grpc 共享mod微服务框架 **Repository Path**: trident-framework/golang-microgrpc-sharemod ## 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**: 2025-09-30 - **Last Updated**: 2025-11-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # golang-microgrpc-sharemod 这是一个基于 Go 语言的微服务项目,包含多个服务模块,如网关服务、用户服务和通用服务。该项目使用 gRPC 作为服务间通信协议,并支持多种服务发现与配置中心,如 Nacos 和 Consul。 ## 项目结构 - **gateway-api**:网关服务,负责接收外部请求并路由到对应服务。 - **services/common-service**:通用服务,提供基础功能供其他服务调用。 - **services/user-service**:用户服务,处理用户相关的业务逻辑。 ``` golang-microgrpc-sharemod/ ├── gateway-api/ # 网关服务 | ├── config/ # 配置目录 | ├── constants/ # 常量目录 | ├── controllers/ # 控制器目录 | ├── logs/ # 日志目录 | ├── middlewares/ # 中间件目录 | ├── routers/ # 路由目录 | ├── static/ # 静态目录 | ├── utils/ # 工具目录 | ├── deploy.yaml # k8s部署文件 | ├── docker_compose_Jenkinsfile # docker-compose CICD文件 | ├── docker-compose.yaml # docker-compose部署文件 | ├── Dockerfile # 构建镜像文件 | ├── k8s_Jenkinsfile # k8s CICD文件 | ├── kubesphere_Jenkinsfile # kubesphere CICD文件 | └── main.go # 主文件 ├── services/ | ├── common-service/ # 通用服务 | | ├── config/ # 配置目录 | | ├── constants/ # 常量目录 | | ├── handler/ # 处理器目录 | | ├── interceptors/ # 拦截器目录 | | ├── logs/ # 日志目录 | | ├── models/ # 模型目录 | | ├── proto/ # proto目录 | | ├── utils/ # 工具目录 | | ├── deploy.yaml # k8s部署文件 | | ├── docker_compose_Jenkinsfile # docker-compose CICD文件 | | ├── docker-compose.yaml # docker-compose部署文件 | | ├── Dockerfile # 构建镜像文件 | | ├── k8s_Jenkinsfile # k8s CICD文件 | | ├── kubesphere_Jenkinsfile # kubesphere CICD文件 | | └── main.go # 主文件 | ├── user-service/ # 用户服务 | | ├── config/ # 配置目录 | | ├── constants/ # 常量目录 | | ├── handler/ # 处理器目录 | | ├── interceptors/ # 拦截器目录 | | ├── logs/ # 日志目录 | | ├── models/ # 模型目录 | | ├── proto/ # proto目录 | | ├── utils/ # 工具目录 | | ├── deploy.yaml # k8s部署文件 | | ├── docker_compose_Jenkinsfile # docker-compose CICD文件 | | ├── docker-compose.yaml # docker-compose部署文件 | | ├── Dockerfile # 构建镜像文件 | | ├── k8s_Jenkinsfile # k8s CICD文件 | | ├── kubesphere_Jenkinsfile # kubesphere CICD文件 | | └── main.go # 主文件 ├── go.mod ├── go.sum └── README.md ``` ## 功能特性 - 支持多种服务发现机制(Nacos、Consul、Etcd) - 支持多种配置中心(Nacos、Consul、Etcd) - 提供 gRPC 服务通信 - 支持 Redis、MySQL、MongoDB 等多种数据存储 - 提供日志、限流、熔断、消息队列等功能 - 提供 JWT 认证、权限控制等安全机制 ## 安装与部署 ### 环境要求 - Go 1.18+ - Docker 19+ - gRPC 支持 - Redis、MySQL、MongoDB(根据需要安装) ### 构建与运行 1. **克隆项目** ```bash git clone https://gitee.com/trident-framework/golang-microgrpc-sharemod.git cd golang-microgrpc-sharemod ``` 2. **构建服务** 使用 Docker 构建服务镜像: ```bash # 构建网关服务 cd gateway-api docker build -t gateway-api . # 构建用户服务 cd ../services/user-service docker build -t user-service . # 构建通用服务 cd ../common-service docker build -t common-service . ``` 3. **运行服务** 使用 `docker-compose` 启动服务: ```bash docker-compose up -d ``` 或手动运行: ```bash docker run -d -p 8080:8080 --name gateway-api gateway-api docker run -d -p 50051:50051 --name user-service user-service docker run -d -p 50052:50052 --name common-service common-service ``` ## 使用说明 ### 网关服务 API 示例 - **用户登录** ```http POST /api/v1/user/login { "username": "test", "password": "123456" } ``` - **获取用户信息** ```http GET /api/v1/user/1 ``` ### gRPC 调用示例 用户服务提供 gRPC 接口供其他服务调用,例如: ```protobuf // 用户服务接口 service UserSrv { rpc UserDetail(UserDetailRequest) returns (UserResponse); } ``` 调用方式: ```go conn, _ := grpc.Dial("user-service:50051", grpc.WithInsecure()) client := pbUser.NewUserSrvClient(conn) resp, _ := client.UserDetail(ctx, &pbUser.UserDetailRequest{Uid: 1}) ``` ## 配置说明 所有服务支持通过配置文件进行配置,配置文件位于 `config/` 目录下,支持以下配置项: - `app.yml`:基础服务配置(端口、环境等) - `nacos.yml` / `consul.yml`:服务发现与配置中心配置 - `redis.yml` / `mysql.yml`:数据库连接配置 - `sentinel.yaml`:限流与熔断配置 ## 日志与监控 - 使用 `zap` 作为日志框架,支持结构化日志输出 - 支持集成 Jaeger 进行分布式追踪 - 提供 Prometheus 指标暴露接口,可用于监控服务状态 ## 开发与贡献 欢迎贡献代码和文档。请遵循以下步骤: 1. Fork 项目 2. 创建新分支 (`git checkout -b feature/new-feature`) 3. 提交更改 (`git commit -am 'Add new feature'`) 4. 推送分支 (`git push origin feature/new-feature`) 5. 创建 Pull Request ## 许可证 本项目采用 MIT 许可证。详见 [LICENSE](LICENSE) 文件。