# TurboWeb
**Repository Path**: ygangs/turboweb
## Basic Information
- **Project Name**: TurboWeb
- **Description**: TurboWeb 是一款专为现代高并发场景打造的轻量级 Web 开发引擎。它基于 Netty 构建,原生支持虚拟线程调度,拥抱同步编程模型的同时,具备近似异步模型的吞吐能力。无论是千万级连接的稳定支撑,还是超高并发请求的顺滑处理,TurboWeb 都能提供可靠、可控的表现。
- **Primary Language**: Java
- **License**: MulanPSL-2.0
- **Default Branch**: master
- **Homepage**: https://gitee.com/turboweb/turboweb
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 14
- **Created**: 2025-08-02
- **Last Updated**: 2025-08-02
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
> 你还在纠结“同步代码写得爽”还是“异步框架性能强”?
>
> **别选了,全都要!**
>
> **TurboWeb** —— 用同步的姿势,干掉异步的活儿!
## TurboWeb是什么?
**TurboWeb** 是一个现代、高性能、无废话的 Java Web 框架,底层基于 Netty,核心依托 **JDK 21 虚拟线程(Loom)**,为高并发场景而生。它不仅运行得飞快,还写得极爽——
你写的,是再普通不过的同步 Java 代码;
你收获的,是让异步框架都汗颜的吞吐性能。
不再需要回调、响应式、链式 API,也不必掌握 Mono、Flux 或什么“编排式编程”——只要用好一个 `HttpContext`,剩下的,都交给 TurboWeb。
## 为什么选择TurboWeb?
**_同步开发体验,异步级性能_**
TurboWeb 全面基于 **虚拟线程** 执行请求处理,不再使用传统线程池。每个请求拥有独立线程,上万并发依旧从容,开发体验丝滑如春风。
**_中间件驱动的灵活架构_**
TurboWeb 拒绝内置臃肿,所有功能都以中间件形式插件化集成:跨域处理、限流、模板渲染、甚至是 controller 本身,都是中间件。你只引入你用到的,它就只干你想干的。
**_长连接原生支持_**
WebSocket 与 SSE 原生集成,无需第三方依赖即可构建 IM、推送、实时控制等高连接数应用,底层生命周期由 Netty 驱动,性能轻盈又稳定。
**_极简路由与控制器_**
使用注解声明路由,所有控制器方法的参数统一为 `HttpContext`,你拥有 100% 控制权。框架通过**方法句柄**(非反射)进行方法调用,性能与手写代码无异。
**_去中心化服务间通信_**
TurboWeb 不依赖传统中心化网关。通过“服务间路由共享”,每个节点都可以对外暴露接口,轻松构建更加**去中心化、弹性更强**的微服务架构。
**_文件下载支持伪异步I/O_**
传统零拷贝虽然高效,但强依赖 Netty IO 线程。TurboWeb 采用更稳健的**伪异步传输模型**,确保业务线程控制文件读取,**性能与稳定性并存**,避免阻塞关键 IO 线程。
**_最简启动,极速响应_**
无需 XML,无需注解扫描,几行代码即可跑通请求流程。框架启动只需百毫秒,占用几十 MB,适合快速开发、小型部署,也适合重型分布式集群服务。
**TurboWeb**,不只是一个框架,更是一种**”用同步思维写异步应用”**的全新范式。
准备好了吗?
是时候用同步代码迎接高并发挑战,
和 TurboWeb 一起,重构你的 Web 开发体验。
## 计划发布特性
> 以下特性预计在下一个版本中正式集成。
### 1.大文件下载零拷贝实现
在此前版本中,TurboWeb 并未启用零拷贝机制,原因在于:零拷贝操作通常发生在 Netty 的 I/O 线程上,而这些线程在 TurboWeb 中属于核心资源,原则上不得被阻塞。
为此,TurboWeb 对 Netty 的 `NioSocketChannel` 进行了增强处理,以安全地支持零拷贝传输。
**_技术优势_**
在发生零拷贝传输时,TurboWeb 会将当前 Channel 从 Netty 的 I/O 线程中**逻辑卸载**,此期间 I/O 线程将不再负责该 Channel 的写出操作。
整个零拷贝过程由专用的**零拷贝线程池**异步执行。
传输完成后,TurboWeb 会通过**虚拟线程**将该 Channel 安全地**重新装载**回 Netty 的事件循环中,从而在性能和资源管理之间实现平衡。
### 2.三级限流体系
为了全面保护系统资源,TurboWeb 引入了 **三级限流体系**,在不同层级对请求流量进行控制,以实现从连接入口到业务处理的全链路限流策略。
- **一级限流**:基于 Netty 层,实现最大连接数限制,从源头控制连接的接入压力。
- **二级限流**:在 `HttpScheduler` 层实现,维护请求执行许可和挂起上限,主要应对瞬时高并发请求。
- **三级限流**:在中间件层按业务维度配置限流策略,对特定路由、接口、用户等进行精细化限流。
**_技术优势_**
- **一级限流** 直接作用于底层连接,保障 IO 线程不会因连接过多而失控,避免系统雪崩。
- **二级限流** 采用一种“理性乐观”的方式进行调度:
- TurboWeb 维护了一个 **执行许可池** 和一个 **最大挂起阈值**;
- 请求到达后,只有获得许可的线程才能继续执行业务;
- 当许可发完后,若挂起线程数尚未超过阈值,系统会**尝试等待**许可回收,避免过早拒绝请求;
- 若超过最大挂起数或等待超时,则直接拒绝请求,避免线程资源浪费。
该机制在提升请求成功率的同时,有效限制了系统在高并发下的资源消耗。
- **三级限流** 由用户自定义配置,可按接口、路径、IP 或其他维度设置不同的限流规则,实现面向业务的灵活控制。
## 目录
[快速入门——第一个“Hello World”](./docs/quickstart.md)
[路由体系](./docs/router.md)
[请求数据的处理](./docs/request.md)
[响应数据的处理](./docs/response.md)
[文件的上传和下载](./docs/file.md)
[异常处理器](./docs/exceptionhandler.md)
[中间件的使用](./docs/middleware.md)
[拦截器的使用](./docs/interceptor.md)
[静态资源的支持](./docs/staticresource.md)
[模板技术的支持](./docs/template.md)
[运行信息的获取](./docs/serverinfo.md)
[Cookie](./docs/cookie.md)
[Session](./docs/session.md)
[Server-Sent Events](./docs/sse.md)
[WebSocket](./docs/websocket.md)
[嵌入式网关](./docs/gateway.md)
[监听器](./docs/listener.md)
[服务器参数配置](./docs/config.md)