# LinuxServer **Repository Path**: ugmind/LinuxServer ## Basic Information - **Project Name**: LinuxServer - **Description**: 高性能服务器开发 Reactor模式 - **Primary Language**: C++ - **License**: GPL-3.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2020-08-29 - **Last Updated**: 2023-10-31 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Linux Server ## Reactor 介绍 ​ Reactor可能是每个Linux C/C++开发的朋友们都绕不过的话题,有人说我又不做共性能服务器开发,不需要了解这些东西啊。 ​ 确实,基本的操作确实够日常工作的使用,但是高性能不仅仅是服务器需要啊,客户端也需要,我们学习Reactor模式,高性能服务器的目的是为了从可见功能开发向不可见的性能开发转变。 ​ Reactor设计模式是event-driven architecture的一种实现方式,处理多个客户端并发的向服务端请求服务的场景。每种服务在服务端可能由多个方法组成。reactor会解耦并发请求的服务并分发给对应的事件处理器来处理。目前,许多流行的开源框架都用到了reactor模式,如:netty、node.js等,包括java的nio。 ## 测试端效果图 说明:丢包数是假的,我的应用协议设计的不是闭环的。。。 ![image-20200829181727992](images/image-20200829181727992.png) ## 服务端的阶段内容说明 ![image-20200829181518743](images/image-20200829181518743.png) 1. A1_TCP_Server:Linux/C版Tcp服务端 2. A2_Epoll_Server:Linux/C Epoll版服务端 3. A3_Reactor_OO:Linux/C++ Reactor面向对象实现 4. A3_Reactor_BO:Linux/C++ Reactor基于对象实现 5. B1_C_CallbackFunc:C语言版的回调函数(普通函数为回调函数--函数指针) 6. B2_CPP_CallbackFunc:C++/C语言版的回调函数(普通函数为回调函数--函数指针) 7. B3_STD_CallbackFunc:C++11标准版的回调函数(成员函数为回调函数--std::function) 8. B4_CPP_SignalSlot:使用C++11标准中std::function实现Qt的信号与槽 9. C1_C_Thread:Linux/C 线程的使用 10. C2_OO_ThreadClass:Linux/C++ 封装Linux/C线程操作(面向对象) 11. C3_BO_ThreadClass:Linux/C++ 封装Linux/C线程操作(基于对象) 12. C4_C_ThreadPool:Linux/C 实现线程池 13. C5_CPP_ThreadPool:Linux/C++ 封装线程池 14. D1_HighReactor:Reactor + ThreadPool 15. D2_APP_ChatServer:在聊天室中使用HighReactor测试性能 ## Reactor模式--面向对象 ![image-20200829175956627](images/image-20200829175956627.png) ## Reactor模式--面向对象 ![image-20200829181004600](images/image-20200829181004600.png) ## Linux/C++ 封装线程池 ![image-20200829183158616](images/image-20200829183158616.png) 安装教程 1. C99标准 2. C++98标准 3. 部分C++11标准 4. sql92标准 5. Sqlite/Mysql 6. Qt CreatorIDE 7. 非Qt项目 8. 项目以ChatServer 和ChatClient为平台