# HoTime **高性能 Go Web 服务框架** ## 特性 - **高性能** - 单机 10万+ QPS,支持百万级并发用户 - **多数据库支持** - MySQL、SQLite3,支持主从分离 - **三级缓存系统** - Memory > Redis > DB,自动穿透与回填 - **Session管理** - 内置会话管理,支持多种存储后端 - **自动代码生成** - 根据数据库表自动生成 CRUD 接口 - **丰富工具类** - 上下文管理、类型转换、加密解密等 ## 快速开始 ### 安装 ```bash go get code.hoteas.com/golang/hotime ``` ### 最小示例 ```go package main import ( . "code.hoteas.com/golang/hotime" . "code.hoteas.com/golang/hotime/common" ) func main() { appIns := Init("config/config.json") appIns.Run(Router{ "app": { "test": { "hello": func(that *Context) { that.Display(0, Map{"message": "Hello World"}) }, }, }, }) } ``` 访问: http://localhost:8081/app/test/hello ## 性能测试报告 ### 测试环境 | 项目 | 配置 | |------|------| | CPU | 24 核心 | | 系统 | Windows 10 | | Go 版本 | 1.19.3 | ### 测试结果 | 并发数 | QPS | 成功率 | 平均延迟 | P99延迟 | |--------|-----|--------|----------|---------| | 500 | 99,960 | 100% | 5.0ms | 25.2ms | | **1000** | **102,489** | **100%** | **9.7ms** | **56.8ms** | | 2000 | 75,801 | 99.99% | 26.2ms | 127.7ms | | 5000 | 12,611 | 99.95% | 391.4ms | 781.4ms | ### 性能总结 ``` 最高 QPS: 102,489 请求/秒 最佳并发数: 1,000 ``` ### 并发用户估算 | 使用场景 | 请求频率 | 可支持用户数 | |----------|----------|--------------| | 高频交互 | 1次/秒 | ~10万 | | 活跃用户 | 1次/5秒 | ~50万 | | 普通浏览 | 1次/10秒 | ~100万 | | 低频访问 | 1次/30秒 | ~300万 | **生产环境建议**: 保留 30-50% 性能余量,安全并发用户数约 **50万 - 70万** ### 与主流框架性能对比 | 框架 | 典型QPS | 基础实现 | 性能评级 | |------|---------|----------|----------| | **HoTime** | **~100K** | net/http | 第一梯队 | | Fiber | ~100K+ | fasthttp | 第一梯队 | | Gin | ~60-80K | net/http | 第二梯队 | | Echo | ~60-80K | net/http | 第二梯队 | | Chi | ~50-60K | net/http | 第二梯队 | ## 框架对比 ### 功能特性对比 | 特性 | HoTime | Gin | Echo | Fiber | |------|--------|-----|------|-------| | 性能 | 100K QPS | 70K QPS | 70K QPS | 100K QPS | | 内置ORM | ✅ | ❌ | ❌ | ❌ | | 内置缓存 | ✅ 三级缓存 | ❌ | ❌ | ❌ | | Session | ✅ 内置 | ❌ 需插件 | ❌ 需插件 | ❌ 需插件 | | 代码生成 | ✅ | ❌ | ❌ | ❌ | | 微信/支付集成 | ✅ 内置 | ❌ | ❌ | ❌ | | 路由灵活性 | 中等 | 优秀 | 优秀 | 优秀 | | 社区生态 | 较小 | 庞大 | 较大 | 较大 | ### HoTime 优势 1. **开箱即用** - 内置 ORM + 缓存 + Session,无需额外集成 2. **三级缓存** - Memory > Redis > DB,自动穿透与回填 3. **开发效率高** - 链式查询语法简洁,内置微信/云服务SDK 4. **性能优异** - 100K QPS,媲美最快的 Fiber 框架 ### 适用场景 | 场景 | 推荐度 | 说明 | |------|--------|------| | 中小型后台系统 | ⭐⭐⭐⭐⭐ | 完美适配,开发效率最高 | | 微信小程序后端 | ⭐⭐⭐⭐⭐ | 内置微信SDK | | 快速原型开发 | ⭐⭐⭐⭐⭐ | 代码生成 + 全功能集成 | | 高并发API服务 | ⭐⭐⭐⭐ | 性能足够 | | 大型微服务 | ⭐⭐⭐ | 建议用Gin/Echo | ### 总体评价 | 维度 | 评分 | 说明 | |------|------|------| | 性能 | 95分 | 第一梯队,媲美Fiber | | 功能集成 | 90分 | 远超主流框架 | | 开发效率 | 85分 | 适合快速开发 | | 生态/社区 | 50分 | 持续建设中 | > **总结**: HoTime 是"小而全"的高性能框架,性能不输主流,集成度远超主流,适合独立开发者或小团队快速构建中小型项目。 --- ## 数据库操作 ### 基础 CRUD ```go // 查询单条 user := that.Db.Get("user", "*", Map{"id": 1}) // 查询列表 users := that.Db.Select("user", "*", Map{"status": 1, "ORDER": "id DESC"}) // 插入数据 id := that.Db.Insert("user", Map{"name": "test", "age": 18}) // 更新数据 rows := that.Db.Update("user", Map{"name": "new"}, Map{"id": 1}) // 删除数据 rows := that.Db.Delete("user", Map{"id": 1}) ``` ### 链式查询 ```go users := that.Db.Table("user"). LeftJoin("order", "user.id=order.user_id"). And("status", 1). Order("id DESC"). Page(1, 10). Select("*") ``` ### 条件语法 | 语法 | 说明 | 示例 | |------|------|------| | key | 等于 | "id": 1 | | key[>] | 大于 | "age[>]": 18 | | key[<] | 小于 | "age[<]": 60 | | key[!] | 不等于 | "status[!]": 0 | | key[~] | LIKE | "name[~]": "test" | | key[<>] | BETWEEN | "age[<>]": Slice{18, 60} | ## 缓存系统 三级缓存: **Memory > Redis > Database** ```go // 通用缓存 that.Cache("key", value) // 设置 data := that.Cache("key") // 获取 that.Cache("key", nil) // 删除 // Session 缓存 that.Session("user_id", 123) // 设置 userId := that.Session("user_id") // 获取 ``` ## 中间件 ```go appIns.SetConnectListener(func(that *Context) bool { if that.Session("user_id").Data == nil { that.Display(2, "请先登录") return true // 终止请求 } return false // 继续处理 }) ``` ## 扩展功能 - **微信支付/公众号/小程序** - dri/wechat/ - **阿里云服务** - dri/aliyun/ - **腾讯云服务** - dri/tencent/ - **文件上传下载** - dri/upload/, dri/download/ - **MongoDB** - dri/mongodb/ - **RSA加解密** - dri/rsa/ ## License MIT License --- **HoTime** - 让 Go Web 开发更简单、更高效