# goframe-gateway **Repository Path**: lenmx/goframe-gateway ## Basic Information - **Project Name**: goframe-gateway - **Description**: go-frame框架实现的微服务网关(http) · 微服务通过nacos注册,同时nacos也作为微服务的配置中心 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-12 - **Last Updated**: 2026-01-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # goframe-gateway 基于GoFrame的微服务网关项目,提供服务发现、反向代理、限流等功能。 ## 功能特性 - **服务发现**:集成Nacos,实现动态服务发现与配置管理。 - **反向代理**:根据服务名动态路由请求,支持负载均衡。 - **限流控制**:提供基于服务的请求限流功能,防止系统过载。 - **优雅关闭**:支持服务平滑关闭,确保关闭时处理完正在进行的请求。 - **事件管理**:实现事件注册与触发机制,便于扩展业务逻辑。 ## 安装依赖 确保已安装Go环境(1.16+)及必要的依赖包: ```bash go mod tidy ``` ## 快速启动 运行网关服务: ```bash go run main.go ``` ## 配置说明 配置文件位于 `src/manifest/config/` 目录下,支持多种配置方式: - `config.dev.yaml`: 本地开发环境配置。 - `config.nacos.yaml`: Nacos配置中心集成配置。 ## 目录结构 - `src/`: 项目源码目录。 - `internal/`: 内部逻辑实现。 - `boot/`: 启动初始化逻辑。 - `nacos/`: Nacos集成相关代码。 - `reverse_proxy/`: 反向代理逻辑。 - `route/`: 路由管理。 - `main.go`: 程序入口。 ## 使用示例 ### 服务发现 通过Nacos注册服务并动态发现: ```go nacosClient := NewNacos(ctx) nacosClient.UseConfig() nacosClient.AddDiscovery() ``` ### 反向代理 初始化反向代理池并进行请求转发: ```go proxyPool := NewReverseProxyPool(ctx, routeMap, getRouteFn) proxy := proxyPool.Pick(ctx, serviceName) ``` ### 限流控制 为服务设置限流规则: ```go limiter := NewProxyLimiter(routeLimiter) ``` ## 事件管理 注册并触发事件: ```go event := Event() event.Register("group", callback) event.Call("group", ctx, args...) ``` ## 优雅关闭 监听系统信号,实现服务平滑关闭: ```go signalListen(ctx, signalHandlerForOverall) ``` ## 贡献指南 欢迎贡献代码和改进文档。请遵循以下步骤: 1. Fork仓库。 2. 创建新分支。 3. 提交代码更改。 4. 创建Pull Request。 ## 许可证 本项目采用 MIT 许可证。详情请查看 LICENSE 文件。