- 完成 ReqParam/ReqParams 方法实现,用于获取 URL 参数并返回 *Obj - 完成 ReqForm/ReqForms 方法实现,用于获取表单数据并返回 *Obj - 完成 ReqJson/ReqJsons 方法实现,用于获取 JSON Body 并返回 *Obj - 完成 ReqFile/ReqFiles 方法实现,用于获取上传文件 - 完成 ReqData/ReqDatas 方法实现,用于统一封装请求数据获取并返回 *Obj - 更新计划文件状态,标记所有相关功能模块为已完成
HoTime
高性能 Go Web 服务框架
特性
- 高性能 - 单机 10万+ QPS,支持百万级并发用户
- 多数据库支持 - MySQL、SQLite3,支持主从分离
- 三级缓存系统 - Memory > Redis > DB,自动穿透与回填
- Session管理 - 内置会话管理,支持多种存储后端
- 自动代码生成 - 根据数据库表自动生成 CRUD 接口
- 丰富工具类 - 上下文管理、类型转换、加密解密等
快速开始
安装
go get code.hoteas.com/golang/hotime
最小示例
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 优势
- 开箱即用 - 内置 ORM + 缓存 + Session,无需额外集成
- 三级缓存 - Memory > Redis > DB,自动穿透与回填
- 开发效率高 - 链式查询语法简洁,内置微信/云服务SDK
- 性能优异 - 100K QPS,媲美最快的 Fiber 框架
适用场景
| 场景 | 推荐度 | 说明 |
|---|---|---|
| 中小型后台系统 | ⭐⭐⭐⭐⭐ | 完美适配,开发效率最高 |
| 微信小程序后端 | ⭐⭐⭐⭐⭐ | 内置微信SDK |
| 快速原型开发 | ⭐⭐⭐⭐⭐ | 代码生成 + 全功能集成 |
| 高并发API服务 | ⭐⭐⭐⭐ | 性能足够 |
| 大型微服务 | ⭐⭐⭐ | 建议用Gin/Echo |
总体评价
| 维度 | 评分 | 说明 |
|---|---|---|
| 性能 | 95分 | 第一梯队,媲美Fiber |
| 功能集成 | 90分 | 远超主流框架 |
| 开发效率 | 85分 | 适合快速开发 |
| 生态/社区 | 50分 | 持续建设中 |
总结: HoTime 是"小而全"的高性能框架,性能不输主流,集成度远超主流,适合独立开发者或小团队快速构建中小型项目。
数据库操作
基础 CRUD
// 查询单条
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})
链式查询
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
// 通用缓存
that.Cache("key", value) // 设置
data := that.Cache("key") // 获取
that.Cache("key", nil) // 删除
// Session 缓存
that.Session("user_id", 123) // 设置
userId := that.Session("user_id") // 获取
中间件
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 开发更简单、更高效
Description
v1.6.3
Latest
Languages
JavaScript
91.5%
Go
8.5%