# A tiny Web Server **Repository Path**: watercant/a-tiny-web-server-a ## Basic Information - **Project Name**: A tiny Web Server - **Description**: 基于C++于linux环境下搭建的轻量级高并发Web服务器 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: https://gitee.com/watercant - **GVP Project**: No ## Statistics - **Stars**: 2 - **Forks**: 2 - **Created**: 2022-09-12 - **Last Updated**: 2024-03-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: Cpp, MySQL, Linux, STL ## README # A tiny Web Server #### 介绍 :computer: - 基于C++于Linux环境下搭建的轻量级高并发Web服务器 #### ENVIRONMENT :bamboo: - OS: Ubuntu 14.04 - Complier: g++ 4.8 #### 软件架构 :file_folder: 软件架构说明 ![输入图片说明](1cee8c0491e0f6375b09202452b84c66.png) #### 安装教程 :calling: - cd ./安装目录下 - 更改CMakefile - make - ./a.out 端口号 #### 使用说明 :page_facing_up: - 需要安装mysql插件 - 安装linux环境 - 配置g++ #### **Technical points** :wind_chime: - 使用 **线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor和模拟Proactor均实现)** 的并发模型 - 使用状态机解析 **HTTP** 请求报文,支持解析 **GET** 和 **POST** 请求 - 访问服务器数据库实现 **web端用户注册、登录** 功能,可以请求服务器图片和视频文件 - 利用 **单例模式** 与 **阻塞队列** 实现异步的日志系统,记录服务器运行状态; - 经 **Webbench** 压力测试可以实现上万的并发连接数据交换 - 利用标准库容器封装char,实现 **自动增长** 的缓冲区; - 基 **于双向链表** 实现的定时器,关闭超时的非活动连接; - 利用 **RAII** 机制实现了数据库连接池,减少数据库连接建立与关闭的开销,同时实现了用户注册登录功能。 #### **Test** :electric_plug: 使用开源测试工具webbench-1.5进行压力测试 #### **待完成工作** - 时间轮算法实现定时器 - Redis缓存 致谢 - 《Linux高性能服务器编程》 - 《UNIX网络编程》