Files
hotime/README.md
T
hoteas 66f18a084a feat(app): 实现优雅停机功能
- 新增 shuttingDown 原子布尔标志和 shutdownOnce 保证单次执行
- 添加 DrainTimeout 和 ShutdownTimeout 配置参数,默认 5s 和 30s
- 修改 ServeHTTP 拦截新请求返回 503 Service Unavailable
- 实现跨平台信号处理:Windows 关窗口和 Linux SIGTERM/SIGINT
- 添加 recover 保护避免停机过程中 panic 触发重启
- 优化 HTTP 服务退出判断,排除正常关闭情况
- 新增 log.LoggerNoCaller 用于访问日志等无意义调用方场景
- 更新 README 文档增加优雅停机特性说明和文档链接
- 创建详细的优雅停机文档和测试用例
- 添加 Windows 平台特定信号处理实现
- 新增 .cursor 计划文件记录开发方案
2026-04-14 14:07:59 +08:00

3.9 KiB
Raw Blame History

小帮菜后端

测试方法 D:\app\go1.23.1\bin\go.exe test ./dd/... -v

HoTime

高性能 Go Web 服务框架

一个"小而全"的 Go Web 框架,内置 ORM、三级缓存、Session 管理,让你专注于业务逻辑。

核心特性

  • 高性能 - 单机 10万+ QPS,支持百万级并发用户
  • 内置 ORM - 类 Medoo 语法,链式查询,支持 MySQL/SQLite/PostgreSQL
  • 三级缓存 - Memory > Redis > DB,自动穿透与回填
  • Session 管理 - 内置会话管理,支持多种存储后端
  • 代码生成 - 根据数据库表自动生成 CRUD 接口
  • API 测试 - 内置接口测试框架,链式 API、事务自动回滚、覆盖率报告、交互式调试控制台
  • 优雅停机 - 跨平台(Windows/Linux)支持,停机时自动拒绝新请求并等待在途请求完成,配合 nginx 实现零停机滚动重启
  • 开箱即用 - 微信支付/公众号/小程序、阿里云、腾讯云等 SDK 内置

文档

文档 说明
快速上手指南 5 分钟入门,安装配置、路由、中间件、基础数据库操作
HoTimeDB 使用说明 完整数据库 ORM 教程
HoTimeDB API 参考 数据库 API 速查手册
Common 工具类 Map/Slice/Obj 类型、类型转换、工具函数
代码生成器 自动 CRUD 代码生成、配置规则
数据库设计规范 表命名、字段命名、时间类型、必有字段规范
代码生成配置规范 codeConfig、菜单权限、字段规则配置说明
API 测试框架 接口测试、事务隔离、覆盖率追踪、API 调试控制台生成
优雅停机 跨平台优雅停机、nginx 配置、滚动重启操作指南
改进规划 待改进项、设计思考、版本迭代规划

安装

go get code.hoteas.com/golang/hotime

性能

并发数 QPS 成功率 平均延迟
500 99,960 100% 5.0ms
1000 102,489 100% 9.7ms
2000 75,801 99.99% 26.2ms

测试环境:24 核 CPUWindows 10Go 1.19.3

并发用户估算

使用场景 请求频率 可支持用户数
高频交互 1次/秒 ~10万
活跃用户 1次/5秒 ~50万
普通浏览 1次/10秒 ~100万

框架对比

特性 HoTime Gin Echo Fiber
性能 100K QPS 70K QPS 70K QPS 100K QPS
内置ORM
内置缓存 三级缓存
Session 内置 需插件 需插件 需插件
代码生成
API 测试框架 内置 需插件 需插件 需插件
优雅停机 内置跨平台 需自行实现 需自行实现 内置
微信/支付集成 内置

适用场景

场景 推荐度 说明
中小型后台系统 完美适配,开发效率最高
微信小程序后端 内置微信 SDK
快速原型开发 代码生成 + 全功能集成
高并发 API 服务 性能足够
大型微服务 建议用 Gin/Echo

扩展功能

  • 微信支付/公众号/小程序 - dri/wechat/
  • 阿里云服务 - dri/aliyun/
  • 腾讯云服务 - dri/tencent/
  • 文件上传下载 - dri/upload/, dri/download/
  • MongoDB - dri/mongodb/
  • RSA 加解密 - dri/rsa/

License

MIT License


HoTime - 让 Go Web 开发更简单、更高效