mirror of
https://github.com/infinite-iroha/touka.git
synced 2026-06-13 15:47:38 +08:00
Co-authored-by: google-labs-jules[bot] <161369871+google-labs-jules[bot]@users.noreply.github.com>
1.8 KiB
1.8 KiB
Touka (灯花) 简介
Touka 是一个基于 Go 语言构建的高性能、多层次 Web 框架。其设计目标是为开发者提供更直接的控制、有效的扩展能力,以及针对特定场景的行为优化。
为什么选择 Touka?
在众多的 Go Web 框架中,Touka 致力于在保持类似 Gin 的易用性的同时,提供更深度的底层控制和更强大的统一错误处理机制。
核心特性
- 高性能路由: 基于基数树(Radix Tree)实现的路由系统,支持高效的路径匹配、参数捕获和通配符路由。
- 极致性能优化:
- Context 复用: 通过对象池(sync.Pool)管理
touka.Context,显著减少 GC 压力。 - 最小化内存分配: 在热点路径上尽可能减少临时对象的产生。
- Context 复用: 通过对象池(sync.Pool)管理
- 统一错误处理: 独创的
errorCapturingResponseWriter机制,能够捕获包括标准库http.FileServer在内的所有组件产生的错误状态码,并交由全局处理器统一处理。 - 无缝集成 SSE: 内置对 Server-Sent Events 的支持,提供简单易用的回调式 API 和高度灵活的通道式 API。
- 静态资源增强: 针对本地文件、目录以及 Go 嵌入式文件系统(embed.FS)提供了开箱即用的支持。
- 标准库兼容: 提供了适配器,可以轻松将现有的
http.Handler或http.HandlerFunc集成到 Touka 中。
设计哲学
- 直接性: 框架 API 设计直观,尽可能减少开发者需要记忆的概念。
- 可扩展性: 每一个核心组件(如日志、错误处理器、渲染器)都是可插拔或可定制的。
- 健壮性: 内置优雅停机支持,确保在服务器更新或关闭时请求能得到正确处理。
Touka 不仅仅是一个处理 HTTP 请求的工具,它还是构建现代化、可维护、高可用 Web 应用的坚实基础。