# ReactorServer **Repository Path**: sfw003/reactor-server ## Basic Information - **Project Name**: ReactorServer - **Description**: 【中项目】基于Reactor模式的服务器组件 - **Primary Language**: C++ - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-05-02 - **Last Updated**: 2025-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Reactor模式高性能服务器 ## 📖 项目概述 本服务器基于Reactor事件驱动模型开发,实现了多线程非阻塞I/O处理机制,支持HTTP/1.1协议和自定义TCP协议。项目参考[muduo网络库](https://github.com/chenshuo/muduo)设计思想,通过模块化解耦解决了复杂回调问题。 **核心特性**: • Reactor事件驱动架构(主从线程模型) • epoll 实现的高效I/O多路复用 • 多线程任务队列与负载均衡 • HTTP请求解析与响应生成 ## 🛠️ 技术栈 one thread one loop的reactor模式 ![image-20250331105318842](.assets/image-20250331105318842.png) • **核心模式**:Reactor 混合模式 • **网络层**:epoll、非阻塞socket • **线程模型**:主Reactor(1线程) + 子Reactor(N线程池) • **协议支持**:HTTP/1.1报文解析 • **开发环境**:VSCode远程开发 + Ubuntu 22.04 LTS + CMake构建 ## 🚀 快速开始 ## 📂 目录结构 ``` doc: 开发文档 server: reactor服务器组件 + http协议 test: 测试代码 src: 源码 ``` ## 🧠 设计挑战与解决方案 ### 复杂回调处理 通过以下设计解决多层嵌套回调: 1. **模块化拆分**:将事件处理器拆分为Acceptor、Connection、Handler三级结构 2. **状态机管理**:使用`std::function`封装回调链 3. **智能指针生命周期**:通过`shared_ptr`管理连接对象 ### 压力测试 服务器带宽较低,故采用127.0.0.1 本地环回地址 ```cpp root@hcss-ecs-f8b5:~/workspace/WebBench-master# ./webbench -c 500 -t 15 http://127.0.0.1:58888/hello Webbench - Simple Web Benchmark 1.5 Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software. Request: GET /hello HTTP/1.0 User-Agent: WebBench 1.5 Host: 127.0.0.1 Runing info: 500 clients, running 15 sec. Speed=275840 pages/min, 303428 bytes/sec. Requests: 68960 susceed, 0 failed. ``` ## 📚 扩展阅读 • [Reactor模式论文](http://www.dre.vanderbilt.edu/~schmidt/PDF/reactor-siemens.pdf) • [muduo源码分析](https://github.com/chenshuo/documents) • [Linux高性能服务器编程](https://book.douban.com/subject/24722611/)