66f18a084a
- 新增 shuttingDown 原子布尔标志和 shutdownOnce 保证单次执行 - 添加 DrainTimeout 和 ShutdownTimeout 配置参数,默认 5s 和 30s - 修改 ServeHTTP 拦截新请求返回 503 Service Unavailable - 实现跨平台信号处理:Windows 关窗口和 Linux SIGTERM/SIGINT - 添加 recover 保护避免停机过程中 panic 触发重启 - 优化 HTTP 服务退出判断,排除正常关闭情况 - 新增 log.LoggerNoCaller 用于访问日志等无意义调用方场景 - 更新 README 文档增加优雅停机特性说明和文档链接 - 创建详细的优雅停机文档和测试用例 - 添加 Windows 平台特定信号处理实现 - 新增 .cursor 计划文件记录开发方案
101 lines
3.9 KiB
Markdown
101 lines
3.9 KiB
Markdown
# 小帮菜后端
|
||
测试方法
|
||
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 内置
|
||
|
||
## 文档
|
||
|
||
| 文档 | 说明 |
|
||
|------|------|
|
||
| [快速上手指南](docs/QUICKSTART.md) | 5 分钟入门,安装配置、路由、中间件、基础数据库操作 |
|
||
| [HoTimeDB 使用说明](docs/HoTimeDB_使用说明.md) | 完整数据库 ORM 教程 |
|
||
| [HoTimeDB API 参考](docs/HoTimeDB_API参考.md) | 数据库 API 速查手册 |
|
||
| [Common 工具类](docs/Common_工具类使用说明.md) | Map/Slice/Obj 类型、类型转换、工具函数 |
|
||
| [代码生成器](docs/CodeGen_使用说明.md) | 自动 CRUD 代码生成、配置规则 |
|
||
| [数据库设计规范](docs/DatabaseDesign_数据库设计规范.md) | 表命名、字段命名、时间类型、必有字段规范 |
|
||
| [代码生成配置规范](docs/CodeConfig_代码生成配置规范.md) | codeConfig、菜单权限、字段规则配置说明 |
|
||
| [API 测试框架](docs/Testing_API测试框架.md) | 接口测试、事务隔离、覆盖率追踪、API 调试控制台生成 |
|
||
| [优雅停机](docs/graceful-shutdown.md) | 跨平台优雅停机、nginx 配置、滚动重启操作指南 |
|
||
| [改进规划](docs/ROADMAP_改进规划.md) | 待改进项、设计思考、版本迭代规划 |
|
||
|
||
## 安装
|
||
|
||
```bash
|
||
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 核 CPU,Windows 10,Go 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 开发更简单、更高效
|