Linux 高性能服务器编程

Linux 高性能服务器编程

时间:2026/04/10

这组笔记当前已经覆盖 UDP、libevent 入门,以及一篇偏工程化的 Linux 服务端进阶专题。
阅读时可以先分清“传输语义”“事件驱动模型”“协议与线程分层”这三条线,再把它们串成完整服务端链路。


目录

1. UDP 通信

内容重点:

  • UDP 与 TCP 的语义差异
  • Linux 下的常用 UDP 接口
  • UDP 服务端的基本工作流
  • 在 UDP 上实现类似 TCP 的可靠传输思路

适合先看,因为它能把:

  • 报文边界
  • 丢包 / 乱序 / 重复
  • 可靠性到底由谁负责

这些底层问题先讲清楚。

2. [1]libevent.md

内容重点:

  • evconnlistener
  • TCP 监听与连接接入
  • bufferevent 的基础概念
  • 一个 echo server 的最小示例

更偏服务端事件驱动入门。

3. [2]libevent.md

内容重点:

  • bufferevent_socket_new
  • bufferevent_socket_connect
  • 回调、水位、超时
  • 一个最小客户端连接示例

更偏“如何基于 libevent 发起连接并管理 I/O”。

4. 高性能服务器编程笔记一

内容重点:

  • epoll 的 LT / ET 与 Reactor
  • 非阻塞 socket 的常见错误处理
  • timerfd / eventfd / signalfd
  • 线程池与 I/O 线程分层
  • HTTP 解析与应用层协议设计
  • Linux 网络调优参数与排障方法

更偏“把一个事件驱动服务端补成可落地工程模型”。


建议阅读顺序

  1. UDP.md
  2. [1]libevent.md
  3. [2]libevent.md
  4. 高性能服务器编程笔记一.md

原因很简单:

  • 先理解传输层语义
  • 再看事件驱动服务端如何接连接
  • 最后看 bufferevent 客户端和缓冲管理
  • 再补 epoll、线程模型、协议与调优这些工程问题

已补充的进阶主题

  • epoll 的 LT / ET 模式与 Reactor
  • 非阻塞 socket 的错误处理
  • timerfd / eventfd / signalfd
  • 线程池与 I/O 线程分层
  • HTTP 解析与应用层协议设计
  • Linux 网络调优参数与排障方法

后续仍可补的主题

  • sendfile / splice / mmap 与零拷贝
  • SO_REUSEPORT、RSS / RPS / XPS 与多队列
  • io_uring 与传统 Reactor 的差异
  • 数据库 / 缓存 / RPC 接入后的背压治理