网络框架的要点使用TCP还是UDP?由于TCP相对于UDP来讲,可靠性高很多,保证包的按序达到,这对于高可靠的存储系统来讲是十分必要的,因此,本文的网络框架将基于TCP来实现。
操作系统的选择由于目前Linux是服务端编程中主流的操作系统平台,因此,本文的网络框架将基于Linux平台,且为X86_64体系架构。
Reactor VS Proactor一般Reactor模型基于I/O多路复用来实现,Linux平台提供select,epoll等接口,而Proactor模型一般基于异步I/O来实现,目前Linux系统对这块支持不太好,因此,本文的网络框架将基于Reactor来实现。
线程模型两种常见的线程模型,一是IO线程和工作线程共用相同线程,二是IO线程和工作线程分开。
I/O线程和工作线程共用
如上图,I/O线程和工作线程共用的线程模型中,实际上是没有专门的工作线程的,I/O线程不仅需要负责处理I/O,还需要真正地处理请求,计算结果。一般典型的处理流程为
Process Read I/O: 处理读I/OProcess: 解析请求,计算结果Process Write I/O:...
阅读全文