【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
???? 个人主页:Zfox_
???? 系列专栏:C++从入门到精通
目录
- ???? 前言
- 一:???? 项目储备知识
-
- ???? HTTP 服务器
- ???? Reactor 模型
-
- ???? 单 Reactor 单线程:单I/O多路复⽤+业务处理
- ???? 单 Reactor 多线程:单I/O多路复⽤+线程池(业务处理)
- ???? 多 Reactor 多线程:多I/O多路复⽤+线程池(业务处理)
- ???? ⽬标定位:OneThreadOneLoop 主从 Reactor 模型⾼并发服务器
- 二:???? 功能模块划分
-
- ???? SERVER 模块
-
- ???? Buffer 模块
- ???? Socket 模块:
- ???? Channel 模块:
- ???? Connection 模块
- ???? Acceptor 模块
- ???? TimerQueue 模块
- ???? Poller 模块:
- ???? EventLoop 模块
- ???? TcpServer 模块
- ???? 模块分析
- 三:???? 项目前置知识技术点
-
- ???? C++11 中的 bind
- ???? 简单的秒级定时任务实现
- ???? 时间轮的思想
- ???? 正则库的简单使用
- ???? 通用类型 any 类型的实现
- ???? 日志类实现
- 四:???? SERVER 服务器模块实现
-
- ???? Buffer 模块
-
- ???? 接收数据
- ???? 读取数据
- ???? 代码实现
- ???? Socket 模块
-
- ???? 测试代码
- ???? Channel 模块
- ???? Poller 模块
- ???? EventLoop 模块
-
- ???? eventfd
- ???? 基本设计思路
- ???? 细节问题
- ???? 理解 Loop (核心)
-
- 循环结构
- 理解 Channel 和 Poller 和 Loop
- 两种 Channel
- ???? TimerQueue 模块
-
- ???? 定时器模块的整合
- ???? TimeWheel 整合到 EventLoop
- ???? Connection 模块
- ???? Acceptor 模块
- ???? LoopThread 模块
- ???? LoopThreadPool 模块
- ???? TcpServer 模块
- 五:???? 搭建一个简易的 echo 服务器
-
- ???? 逻辑图分析
- 六:???? HTTP协议模块实现
-
- ???? Util 模块
- ???? HttpRequest 模块
- ???? HTTPResponse 模块
- ???? HttpContext 模块
- ???? HttpServer 模块
- ???? HttpServer 模块
- 七:???? 服务器功能测试 + 性能测试
-
- ???? 基于 HttpServer 搭建 HTTP 服务器:
- ???? 长连接连续请求测试
- ???? 超时连接释放测试
- ???? 错误请求测试
- ???? 业务处理超时测试
- ???? 同时多条请求测试
- ???? 大文件传输测试
- ???? 服务器性能压力测试
- 八:???? 共勉
???? 前言
???????? 通过咱们实现的⾼并发服务器组件,可以简洁快速的完成⼀个⾼性能的服务器搭建。
并且,通过组件内提供的不同应⽤层协议⽀持,也可以快速完成⼀个⾼性能应⽤服务器的搭建(当前为了便于项⽬的演⽰,项⽬中提供 HTTP 协议组件的⽀持)。
在这⾥,要明确的是咱们要实现的是⼀个⾼并发服务器组件,因此当前的项⽬中并不包含实际的业务内容。
代码仓库:https://gitee.com/zfox-f/concurrent-server
一:???? 项目储备知识
???? HTTP 服务器
???? HTTP(Hyper Text Transfer Protocol),超文本传输协议是应用层协议,是一种简单的请求-响应协议(客户端根据自己的需要向服务器发送请求,服务器针对请求提供服务,完毕后通信结束)。
协议细节在 Linux 网络部分有详细介绍,这里不在赘述。但是需要注意的是 HTTP 协议是一个运行在 TCP








