# 并发服务器项目 **Repository Path**: li-yishenset/concurrent-server-project ## Basic Information - **Project Name**: 并发服务器项目 - **Description**: 仿mudou库one thread one loop式并发服务器实现 - **Primary Language**: C++ - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-09-27 - **Last Updated**: 2025-04-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 项目概述 这是一个主从Reactor模型服务器,主Reactor线程监控监听描述符,获取新连接,保证获取新连接的高效性,提高服务器的并发性能。 主Reactor获取到新连接后分配给子Reactor模型进行通信事件监控,子Reactor线程监控各自的描述符的读写事件进行数据读写以及业务处理。 ## 模块划分 整体分成两个模块: Server模块:实现Reactor模型的TCP服务器 协议模块:对当前的Reactor模型服务器提供应用层协议支持 具体的管理分为3个方面:监听连接、通信连接、超时连接 ### 子模块划分 Buffer模块:缓冲区模块,用于实现用户态的接收缓冲区和发送缓冲区 Socket模块:对套接字的封装 Poller模块:对epoll的封装,主要实现epoll的IO事件添加、移除、获取活跃连接功能 Channel模块:对描述符需要进行的IO事件管理的模块,实现对描述符可读、可写、错误事件的管理,以及Poller模块对文件描述符进行IO事件监控就绪后,根据不同事件回调不同的函数 Connection模块:对Buffer、Socket、Channel模块进行封装,实现对一个通信套接字的整体管理,accept获取到的新连接都会使用Connection进行管理 ![[Connection.png]](/images/Connection.png) Acceptor模块:对Socket、Channel模块的封装,实现对一个监听套接字的管理 TimerQueue模块:向定时任务管理器中添加一个任务,任务将在固定时间后被执行,同时也可以通过刷新定时任务来延迟任务的执行。对Connection对象的生命周期进行管理,对非活跃连接进行超时后的释放。 EventLoop模块:也就是Reactor模块,对Poller、TimerQueue、TcpServer模块的封装。进行所有描述符的事件监控。 TcpServer模块:对Tcp服务器的封装,内部封装了Acceptor模块,EventLoop模块为主(监听连接),EventLoopThreadPool模块为从(数据读写、业务处理)