WebServer

2026-06-25 00:35:41
行业:物联网
载体:操作系统
技术:C++、Linux、Git、CMake

业务和功能介绍


TinyWebServer 是一个用 C++14 从零构建的 Web 服务器,适用于学习 Linux 网络编程、I/O 多路复用、并发模型与 HTTP 协议实现。

### 核心技术

| 技术点 | 实现 |
|--------|------|
| **I/O 多路复用** | epoll (ET/LT 可切换) |
| **并发模型** | Reactor + 半同步/半反应堆 (HSHA) |
| **线程池** | 固定大小线程池 + 条件变量 + shared_ptr 安全设计 |
| **HTTP/1.1** | 手写状态机解析器 + Keep-Alive 长连接 |
| **零拷贝** | mmap 内存映射文件传输 + writev 集中写 |
| **定时器** | 小根堆 (二叉堆 + 哈希索引) O(log n) 超时管理 |
| **数据库** | MySQL 连接池 + RAII 守卫 + SQL 注入防护 |
| **日志** | 异步日志系统 (生产者-消费者 BlockDeque) + 日期/行数切分 |
| **缓冲区** | 用户态 Buffer (readv 分散读 + 动态扩容 + 原子指针) |

项目实现

这个项目采用经典的 Reactor + 半同步/半反应堆(HSHA)架构。

主线程(Reactor)负责 I/O 事件监听和分发:
- 通过 epoll_wait 监听所有连接上的读写事件
- 发生读事件时,将读任务提交到线程池
- 发生写事件时,将写任务提交到线程池
- 发生新连接时,accept 并注册到 epoll

线程池(Worker)负责业务逻辑处理:
- 工作线程从任务队列中取任务执行
- 读任务:读取请求数据 → HTTP 解析 → 生成响应
- 写任务:将响应数据通过 writev 发回客户端

数据流是:客户端 → epoll_wait → 线程池 onRead → HttpRequest::parse
→ HttpResponse::makeResponse → 线程池 onWrite → writev → 客户端

这样做的优势是 I/O 和计算分离,主线程不被业务逻辑阻塞,
epoll ET 模式下可以轻松处理数千并发连接。

示例图片视频


mingold
30天前活跃
方向: 后端-C++、桌面端-Qt、
交付率:100.00%
相似推荐
quick_server
1、背景和目标:对企业所有服务请求进行轻量级安全和速度优化,减轻服务器的并发压力。 2、quick_server系统,不依赖外部引用,即插即用,主要用来进行极速快捷安全的http请求。大大减轻服务器的并发压力。轻松实现高并发场景下极速快捷安全的http请求。
json解析转换器
1、背景和目标:一、超级快速、安全对json的解析与对象转换;二、支持分布式超高并发 2、json解析转换器,支持分布式高并发,支持百万级别访问。用于快速进行json的解析与对象转换。原有的开源工具,要么安全性不够,要么性能不够强悍,要么不支持定制,很难满足企业日益严苛的业务需求。开发的这个json解析转换器,可以同时满足以上三种需求。
消息中心
1、背景和目标:解决高并发,对外提供统一的消息处理业务 2、功能模块介绍:六大功能模块:http通讯模块、缓存模块、消息队列模块、消息重试中心模块、消息调度模块、公共模块;对外百万级别并发项目,TPS可达1000/s。作为中间件,对外提供统一的消息处理业务。所有系统,包括电子签章平台、一照通行平台、一网通办平台,消息的请求和处理都经过消息中心。轻松实现异步、解耦、削峰。 3、功能描述:支持企业所有的内部系统接入,包括电子签章平台、一照通行平台、一网通办平台。轻松实现异步、解耦、削峰。
CRM客户管理后台
立项背景:针对中小型企业客户信息分散、销售跟进过程不透明、合同管理混乱等痛点,旨在打造一个轻量级的客户全生命周期管理后台,提升销售团队协作与转化效率。 核心功能:涵盖管理员登录鉴权、客户主表管理、联系人维护、跟进记录追踪、合同管理等六大模块。支持客户信息分页查询、关键字搜索、新增编辑与逻辑删除;客户详情页以名片形式集中展示联系人、跟进记录及关联合同。 业务流程:从潜在客户录入,到日常跟进记录,再到最终合同签订与操作日志审计,覆盖完整的销售业务闭环。
个人记账与资产管理平台
本项目是一套从零搭建的全栈个人财务管理平台,目标是替代功能单一的记账工具,把日常记账、资金账户、借贷往来、预算控制、资产盘点收敛到一个数据自主的系统中。系统由 12 个业务模块、23 个控制器、170 个 REST 接口、36 张数据表构成:记账核心支持三级分类树、商家联想、多平台支付与 CSV 批量导入导出,每笔账单自动联动账户余额并留存流水日志;借贷模块实现未结清 / 已结清 / 已放弃三态模型,支持分期还款与坏账核销;预算模块提供月度 + 年度双层体系与阶梯式执行规则;资产模块通过快照与趋势图呈现净资产变化;报表模块支持从月度 / 年度报表下钻到分类明细。系统还包含完整 RBAC 权限体系、软删除回收站、8 套主题实时切换与中英双语国际化。核心业务流程为:记一笔 → 余额幂等联动 → 报表与预算同步更新;借据从创建、关联账单凭证、分期还款到三态判定的完整生命周期;以及登录后由后端菜单树动态生成侧边菜单、路由与区块双重门控的权限链路。
帮助文档   Copyright @ 2021-2024 程聚宝 | 浙ICP备2021014372号
人工客服