Redis源码分析(四)
Redis源码分析(四)
1.Linux I/O模型
2.服务器设计范式
2.1基本模型
2.2 服务器设计模型
2.2.1 迭代式
2.2.2每个用户一个进程
2.2.3每个用户一个进程(prefork模型)
2.2.4每个用户一个线程
2.2.5每个用户一个线程+提前创建好线程池
2.2.6主线程统一accept
2.2.7事件驱动(只讨论reactor)
2.2.7.1 单reactor单线程模型
2.2.7.2单reactor+工作线程池
2.2.7.3multi-reactor版本1
2.2.7.4multi-reactor版本2
2.2.8协程模型
3.redis的网络模型
3.1流程图
3.2注意点
3.2.1定时事件:
3.2.2信号:
4.引用
Redis源码分析(四)
1.Linux I/O模型
首先我们需要明确一点,对于一个套接字上的输入包括哪两部分?
等待内核数据数据准备好(等待数据从网络中到达,然后复制到内核的缓冲区)
把数据从内核缓冲区复制到引用进程缓冲区
任一一段阻塞,我们都将其视为同步IO。
不想看图?那好我们来看一张表吧
2.服务器设计范式
2.1基本模型
无论服务端设计什么样的模型,但其基本组件是不变的,不同的在于如何进行
巧妙、高效的组合
。
2.2 服务器设计模型
2.2.1 迭代式
客户端需要进行排队,由此可见并不适合繁忙服务器。
2.2.2每个用户一个进程