Skip to content

joeyhha/WebServer

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

WebServer

用C++实现的高性能WEB服务器,经过webbenchh压力测试可以实现上万的QPS

功能

  • 利用IO复用技术Epoll与线程池实现多线程的Reactor高并发模型;
  • 利用正则与状态机解析HTTP请求报文,实现处理静态资源的请求;
  • 利用标准库容器封装char,实现自动增长的缓冲区;
  • 基于小根堆实现的定时器,关闭超时的非活动连接;
  • 利用单例模式与阻塞队列实现异步的日志系统,记录服务器运行状态;
  • 利用RAII机制实现了数据库连接池,减少数据库连接建立与关闭的开销,同时实现了用户注册登录功能;
  • 添加了用红黑树和跳表实现的timer模块。

目录树

.
├── code           源代码
│   ├── buffer
│   ├── config
│   ├── http
│   ├── log
│   ├── timer
│   ├── pool
│   ├── server
│   └── main.cpp
├── test           单元测试
│   ├── Makefile
│   └── test.cpp
├── resources      静态资源
│   ├── index.html
│   ├── image
│   ├── video
│   ├── js
│   └── css
├── bin            可执行文件
│   └── server
├── log            日志文件
├── webbench-1.5   压力测试
├── build          
│   └── Makefile
├── Makefile
├── LICENSE
└── readme.md
* 测试环境: Ubuntu:20.04 cpu:E5-2620 内存:32G 
* QPS 10000+

设计模式相关已完成优化以及后续

  • 用建造者模式构建主类webserver,将抽象和功能相分离;
  • 用模板方法模式设计start函数;
  • 用策略模式实现不同算法的timer,将对应数据结构和模块进行解耦;
  • 使用工厂模式解决策略模式依赖倒置的问题;
  • 使用单例模式实现日志模块;

About

C++ Linux WebServer服务器

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 50.0%
  • HTML 26.1%
  • CSS 12.1%
  • C 9.0%
  • JavaScript 1.5%
  • Makefile 1.3%