![1.png](http://static.itsharecircle.com/240129/24ad943a50d0fe5c4b07c9abebc3c578.png)
是否具备高并发、高性能、分布式、事件驱动框架设计能力,是优秀C++中高级工程师的分水岭,我将通过本文带领大家纯手写一个Reactor服务器,让大家可以高效掌握三高框架设计思维,同时让你对C++网络编程、线程、智能指针、C++11标准高阶技术等运用自如。
Reactor是一种事件驱动机制,和普通函数调用的不同之处在于:应用程序不是主动的调用某个API完成处理,而是恰恰相反,Reactor逆置了事件处理流程,应用程序需要提供相应的接口并注册到Reactor上,如果相应的事件发生,Reactor将主动调用应用程序注册的接口,这些接口又称为“回调函数”。用“好莱坞原则”来形容Reactor再合适不过了:不要打电话给我们,我们会打电话通知你。
websocket是基于tcp协议的应用层协议,也就是建立在tcp协议之上的自定义协议。这个协议比http协议更加的简单,因为websocket只对协议的格式做要求,只要符合数据格式就可以使用。
websocket一般用来服务器主动推送消息给客户端,反观HTTP,HTTP是请求响应的模式,客户端来一个请求,服务器响应一个请求,服务器无法主动发送数据给客户端;并且使用websocket,客户端和服务器只需要一次“握手”,两者之间就成功建立了长连接,可以双向传输数据
项目定位
a. 主从Reactor模型服务器,主Reactor线程只负责监听描述符,获取新建连接。这样就保证了新连接的获取比较高效,提高了服务器的并发性能。主Reactor获取到新连接后分发给子Reactor进行通信事件监控。
b.子(从)Reactor线程监控各自文件描述符下的读写事件,进行数据读写以及业务处理。
c.One Thread One Loop的思想就是把所有的操作都放到线程中进行,一个线程对应一个EventLoop。
- 请尽量让自己的回复能够对别人有帮助
- 支持 Markdown 格式, **粗体**、~~删除线~~、
`单行代码`
- 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
- 图片支持拖拽、截图粘贴等方式上传