# gin-micro **Repository Path**: judeli/gin-micro ## Basic Information - **Project Name**: gin-micro - **Description**: 这是一套基于gin的web服务开发组件集,偏向于voip应用开发。已经稳定运行一年以上。 - **Primary Language**: Go - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-16 - **Last Updated**: 2026-10-02 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Gin-Micro 微服务框架 基于 Gin 框架构建的微服务开发框架,提供了丰富的组件和工具库,支持快速构建企业级应用。 ## 项目简介 Gin-Micro 是一个用 Go 语言编写的微服务开发框架,基于 Gin Web 框架构建。它整合了多个常用组件,包括缓存、数据库、服务发现、配置管理等,为开发者提供了一站式的微服务开发解决方案。 ## 核心特性 ### 1. Web 框架 - 基于 Gin 高性能 Web 框架 - 统一的响应格式封装 - 丰富的中间件支持(CORS、限流、日志、异常处理等) ### 2. 通信组件 (common-esl) - FreeSWITCH Event Socket Library (ESL) 封装 - 支持 Inbound/Outbound 模式 - 完整的电话通信控制能力 ### 3. 数据存储 - **Redis**: 支持单点模式和集群模式,提供完善的 API 封装 - **MySQL**: 基于 XORM 的数据库操作 - **OSS**: 对象存储服务支持 ### 4. 服务治理 - **Nacos**: 服务注册与发现、配置管理 - **LDAP**: 目录服务集成 ### 5. 工具库 - 常用工具函数(字符串处理、加密解密、时间处理等) - JWT 认证 - 本地缓存 - 日志管理 ## 目录结构 ``` . ├── common/ # 公共组件库 │ ├── configs/ # 配置管理 │ ├── consts/ # 常量定义 │ ├── libs/ # 第三方库封装 │ │ ├── db/ # 数据库 (XORM) │ │ ├── ldap/ # LDAP 目录服务 │ │ ├── localCache/ # 本地缓存 │ │ ├── logrus/ # 日志 │ │ ├── nacos/ # Nacos 服务发现与配置 │ │ ├── oss/ # 对象存储 │ │ └── redis/ # Redis 客户端 │ └── utils/ # 工具函数 ├── common-esl/ # FreeSWITCH ESL 封装 ├── common-web/ # Web 公共组件 │ └── middlewares/ # 中间件 └── web-demo/ # 示例应用 ├── config/ # 配置初始化 ├── internal/ # 内部业务逻辑 │ ├── consts/ # 业务常量 │ ├── job/ # 定时任务 │ └── ... └── main.go # 入口文件 ``` ## 快速开始 ### 环境要求 - Go 1.21+ - Redis - MySQL 5.7+ - Nacos (可选,用于服务治理) ### 安装 ```bash git clone https://gitee.com/judeli/gin-micro.git cd gin-micro go mod tidy ``` ### 配置 在 `web-demo/application.yaml` 中配置数据库、Redis 等服务: ```yaml server: port: 8080 ip: "0.0.0.0" redis: mode: single addr: "localhost:6379" password: "" db: 0 database: driver: "mysql" host: "localhost" port: 3306 user: "root" password: "password" dbname: "gin_micro" ``` ### 运行示例 ```bash cd web-demo go run main.go ``` ## 核心模块使用 ### Redis 使用 ```go import "gin-micro/common/libs/redis" // 初始化单点模式 config := &redis.RedisConfig{ Mode: redis.ModeSingle, Addr: "localhost:6379", Password: "", } err := redis.InitRedis(config, logger) // 使用 err = redis.DefaultRedisClient.Set("key", "value", time.Hour) val, err := redis.DefaultRedisClient.Get("key") ``` ### 中间件使用 ```go import ( "gin-micro/common-web/middlewares/general" "github.com/gin-gonic/gin" ) router.Use(general.CORSMiddleware()) router.Use(general.CostTimeChecker()) router.Use(general.RateLimiter(100)) // 100 QPS ``` ### 配置管理 ```go import "gin-micro/common/configs" // 从本地 YAML 加载配置 configs.InitApplicationWithLocalYaml() configs.InitWebApplicationWithLocalYaml() // 或从 Nacos 加载 configs.InitWitnNacos() ``` ## 中间件列表 | 中间件 | 说明 | |--------|------| | CORSMiddleware | 跨域请求处理 | | CostTimeChecker | 请求耗时统计 | | ExceptionHandler | 全局异常捕获 | | MaxSizeAllowed | 请求体大小限制 | | MaxAllowed | IP 限流 | | RateLimiter | QPS 限流 | ## 贡献指南 欢迎提交 Issue 和 Pull Request。 ## 许可证 MIT License