C++低延迟网络编程核心技巧

📚 共计 30 章节
01
C++低延迟网络编程概述
什么是低延迟、应用场景(高频交易、游戏服务器)、性能指标(延迟、吞吐量、抖动)
概念场景
02
硬件与操作系统基础
CPU缓存架构(L1/L2/L3)、NUMA架构、中断与轮询、CPU亲和性
硬件OS
03
内存管理技巧
内存池设计、避免动态分配、预分配策略、缓存行对齐(Cache Line Padding)
内存对齐
04
无锁数据结构
原子操作(std::atomic)、内存序(Memory Order)、无锁队列(Lock-Free Queue)实现
无锁原子
05
高性能日志系统
异步日志、环形缓冲区(Ring Buffer)、避免磁盘I/O阻塞
日志异步
06
网络协议栈优化
TCP_NODELAY、TCP_QUICKACK、SO_REUSEPORT、内核旁路(Kernel Bypass)概念
TCP优化
07
IO多路复用进阶
epoll边缘触发(ET)与水平触发(LT)、Reactor模式、Proactor模式
epoll模式
08
用户态协议栈
DPDK入门、RDMA/InfiniBand简介、共享内存通信
DPDKRDMA
09
序列化与反序列化
FlatBuffers、Cap'n Proto、手动序列化(避免反射)
序列化高效
10
时间测量与性能分析
高精度时钟(std::chrono)、perf工具、火焰图
性能分析
11
编译期优化
编译器优化选项(-O2, -O3, -march=native)、LTO、PGO
编译LTO
12
分支预测与流水线
likely/unlikely宏、消除分支、查表法替代分支
分支预测
13
SIMD指令集
SSE/AVX基础、向量化计算、数据对齐要求
SIMD向量化
14
连接管理优化
连接池、预建立连接、心跳保活、优雅关闭
连接池化
15
零拷贝技术
sendfile、splice、mmap、直接I/O
零拷贝高效IO
16
异步编程模型
C++20 Coroutines(协程)、Fiber(纤程)、回调地狱的避免
协程异步
17
内存屏障与指令重排
volatile关键字、内存屏障指令(mfence, lfence, sfence)、StoreLoad问题
屏障重排
18
线程池设计
工作窃取(Work Stealing)、线程绑定、任务优先级
线程池窃取
19
锁的优化
读写锁(RWLock)、自旋锁(SpinLock)、乐观锁、锁粒度细化
优化
20
网络缓冲区设计
动态缓冲区 vs 固定缓冲区、内存碎片管理、批量读写
缓冲区碎片
21
协议设计
二进制协议 vs 文本协议、头部固定长度、TLV(Type-Length-Value)格式
协议TLV
22
流量控制与拥塞控制
滑动窗口、令牌桶、BBR算法理解
流控BBR
23
多核编程挑战
伪共享(False Sharing)、缓存一致性协议(MESI)、数据分片
多核伪共享
24
实时操作系统特性
RT-Preempt补丁、SCHED_FIFO/SCHED_RR调度策略、优先级反转
RTOS调度
25
性能基准测试
微基准测试(Microbenchmark)、Google Benchmark库、统计显著性
基准测试
26
全链路追踪
分布式追踪(Dapper模型)、OpenTelemetry、延迟分解
追踪OpenTelemetry
27
容错与降级
熔断器模式、超时控制、优雅降级、健康检查
容错降级
28
安全与低延迟
加密开销考量、TLS 1.3优化、硬件加速(QAT, AES-NI)
安全加速
29
实战案例一:低延迟UDP服务器
从recvfrom到DPDK的演进
实战UDP
30
实战案例二:高频交易订单系统
从接收到撮合的全链路优化
实战撮合