一款C++轻量型Web服务器
本项目是基于C++11开发的Web服务器。本项目支持http协议,解析了get、head请求,仅支持静态网页,支持http长连接;本项目还实现了异步日志,记录服务器程序的运行过程。
Section Ⅰ | Section Ⅱ | Section Ⅲ |
---|---|---|
模型解析 | 技术点解析 | 测试结果 |
- 运行环境:Ubuntu 16.04
- 编译:gcc 7.4.0
./build.sh
./webserver [-t thread_numbers] [-p port]
- 采用Reactor + 非阻塞IO + 线程池的并发模型
- 采用Round Robin法分配新连接,实现线程间负载均衡
- 采用eventfd实现线程的异步唤醒
- 采用timerfd和最小堆实现计时器,并利用timing wheel法踢掉空闲连接
- 采用双缓冲技术实现了简单的异步日志线程
- 利用智能指针和RAII方法解决内存泄漏问题
- 解析HTTP请求,支持MIME,支持长连接
- 优雅关闭连接
- 利用空闲文件描述符,限制并发连接数
👤 Lynn Tao
- Github: @LynnTh