项目简介
本项目是基于C++和MySQL构建的高性能Web服务器。运用IO复用epoll(ET)、非阻塞IO以及事件处理(模拟Proactor模型)的并发模型,搭配半同步/半反应堆线程池,能够高效处理高并发的HTTP请求。服务器支持GET和POST方法,借助有限状态机解析HTTP请求。同时,项目实现了基于升序双向链表的定时器以处理非活动连接,还有基于懒汉单例模式的同步日志系统。
项目的主要特性和功能
- 高并发处理:采用IO复用epoll(ET)、非阻塞IO与事件处理(模拟Proactor模型)的并发模型,结合半同步/半反应堆线程池,提升并发度,减少频繁创建线程的开销。
- HTTP请求解析:利用有限状态机解析HTTP请求,当前支持GET和POST方法。
- 定时器管理:基于升序双向链表的定时器可处理非活动连接,每15秒定时清除无用连接。
- 日志系统:基于懒汉单例模式的同步日志,可记录服务器运行状态。
- 数据库连接池:使用数据库连接池实现服务器对数据库的访问,提高数据库访问效率。
- 用户验证:通过POST请求完成注册和登录的校验,保障用户信息安全。
安装使用步骤
环境准备
- 确保系统已安装C++编译器(如g++)。
- 安装MySQL数据库,保证服务器能连接到该数据库。
- 安装必要的依赖库,如libmysqlclient-dev(MySQL C API库)。
编译项目
进入项目根目录,使用以下命令进行编译:
bash
g++ -o webserver main.cpp -lpthread -lmysqlclient
配置数据库
在CGImysql/sql_connection_pool.cpp
中配置数据库连接信息,涵盖数据库URL、用户名、密码、数据库名称和端口。
启动服务器
运行编译生成的可执行文件:
bash
./webserver
测试服务器
- 使用浏览器或HTTP客户端工具(如curl)访问服务器的IP地址和端口,测试GET和POST请求。
- 可使用
test_presure/webbench-1.5
目录下的工具进行压力测试,评估服务器性能。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】