Skip to content

A C++11 high performance webserver,支持多线程,单线程,使用Reactor模型,仿照muduo库的one loop per thread

Notifications You must be signed in to change notification settings

hollowcode1/Webserver-Reactor

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

本项目是一个在linux平台上的高并发http服务器。

服务器结构见xmind文件。

usage:

./server [threadNum]

测试Cpu是amd5900hx(分配给虚拟机一半的cpu)运行内存分配了4g

压力测试:

短链接:

image

长连接:

image

实现描述:

本项目使用channel类来封装每个客户端事件,将事件里面的联合体的指针指向channel,然后使用EventLoop类来作为事件分发器(baseloop),建立EPollPoller与channel的联系,其中分发事件采用的算法是轮询算法(在线程池中具体实现),没有使用经典的生产者消费者模型,而是创建wakeupfd,向所要唤醒的线程中随意写一个数据就会触发线程处理读事件,进而唤醒线程执行回调。在服务器中每一个TcpConnection对应一个channel,TcpConnection负责给channel设置回调,并且提供外界设置业务逻辑处理的接口,该接口由TcpServer来设置回调,TcpServer管理所有的TcpConnection,并提供给外界协议的业务逻辑处理的设置回调的接口。HttpServer是基于TcpServer的主要功能就是将业务逻辑处理的回调设置给TcpServer,并且将解析HTTP报文的类和响应HTTP报文的类结合起来处理业务逻辑。其中解析http报文就是将http报文提取出来,一行一行地进行解析,通过其中的特殊字符来分辨解析的部分比如回车换行或者分号等。

About

A C++11 high performance webserver,支持多线程,单线程,使用Reactor模型,仿照muduo库的one loop per thread

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published