1. 高性能服务器架构演进之路
在构建高性能网络服务时,选择合适的并发模型至关重要。让我们从最基础的模型开始,逐步剖析各种方案的优劣。
1.1 基础模型对比
迭代式服务器是最简单的实现方式:单线程顺序处理请求,前一个请求处理完毕才能处理下一个。这种模型在CPU密集型场景下表现糟糕,无法利用多核优势,只适合教学演示或极低并发的场景。
cpp复制// 典型迭代式服务器伪代码
while(true) {
int client_fd = accept(server_fd);
process_request(client_fd); // 阻塞处理
close(client_fd);
}
并发式服务器通过fork()或pthread_create()为每个请求创建独立执行单元。这种模型能较好处理长耗时请求,但存在明显缺陷:
- 进程/线程创建销毁开销大
- 上下文切换成本随并发数线性增长
- 著名的
C10K问题就是由此引发
cpp复制// 典型并发式服务器伪代码
while(true) {
int client_fd = accept(server_fd);
if (fork() == 0) { // 子进程
process_request(client_fd);
exit(0);
}
close(client_fd); // 父进程
}
1.2 优化方案演进
Prefork/Prethread模型通过预创建进程/线程池来避免运行时创建开销。Apache的prefork模式就是典型实现,但仍有资源浪费问题:

Reactor模式采用事件驱动架构,核心组件包括:
- Event Demultiplexer(epoll/kqueue)
- Event Loop
- Event Handler
单Reactor单线程模型虽然简洁,但无法充分利用多核CPU:
cpp复制// Reactor核心逻辑
w
