第一阶段ReactorX 事件驱动引擎Day 1–5一切性能的根基。Day 1 实现 epoll 封装Poller和事件分发抽象Channel第一次运行时你会看到键盘输入被事件循环捕获——这是事件驱动从概念变成代码的一刻Day 2 构建 EventLoop实现 One Loop Per Thread 框架到这天结束你已经能写一个真正跑起来的 echo serverDay 3 接入基于 timerfd 的定时器Day 4 实现 eventfd 跨线程唤醒和线程池Day 5 做压测QPS 可达 50 万第二阶段NetCore 高性能网络库Day 6–10在事件驱动引擎之上搭建完整的网络抽象层。Day 6 封装 Socket RAIIDay 7 实现 Acceptor 连接接受器含 idleFd 技巧防止 fd 耗尽Day 8 实现三区域自动扩容 Bufferreadv 系统调用一次读取所有数据Day 9 是整个网络库最难也最精华的一天——TcpConnection 的四状态机、shared_ptr weak_ptr tie机制防止野指针和提前析构、高水位回调控制发送缓冲Day 10 把所有组件粘合成 Multi-Reactor 架构的 TcpServer主 Reactor 只接连接Sub Reactor 池负责 IORound-Robin 负载均衡三十行代码启动支持数万并发的多线程服务器第三阶段RocketRPC 框架层Day 11–25这才是今天的核心。Day 11项目骨架 protobuf 入门CMake 工程配置第一个.proto文件protoc 代码生成流程用 NetCore TcpServer 验证接口。很多人卡在这里——不知道 protobuf 生成的代码是怎么跟框架连接起来的。这天讲清楚。Day 12–13协议抽象层 TinyPB 编解码Day 12 实现 AbstractProtocol 和 AbstractCoder 抽象层用开闭原则讲清楚为什么要有这一层——协议可以换上层框架代码一行不改。Day 13 是课程第一个硬核技术点TinyPB 二进制帧格式逐字节讲解查表法 CRC32 真实实现对比 rocket 原版硬编码为 1 的假校验网络字节序处理encode/decode 完整实现。Day 14TcpClient 实现NetCore 原生没有客户端组件这是本项目新增的。非阻塞 connect 的 EINPROGRESS 处理很多人在这里踩坑基于mapmsg_id, callback的异步响应匹配——这是 RPC 客户端能做到发出请求、回调通知的底层机制。Day 15异步日志系统独立线程写磁盘sem_t 条件变量驱动framework log 与 app log 分离设计日志文件按大小自动切分。为什么要在框架层之前先做日志因为后面每一个模块出了问题你都需要它。Day 16错误码 msgid 配置系统pid 时间戳 原子计数器生成全局唯一 msgid这是跨服务链路追踪的基础。配置文件驱动端口、线程数、日志级别不再硬编码。Day 17RpcController RpcClosureprotobuf 四件套Service / RpcChannel / RpcController / Closure的关系从这天开始清晰起来。RpcController 携带 msgid、超时、错误码RpcClosure 包装std::function回调。对比 rocket 原版的裸指针说明shared_ptr在这里为什么是必要的不是风格偏好是生命周期问题。Day 18RpcDispatcher本课程最精华的一天protobuf 反射 dispatch 逐行拆解FindMethodByName→GetRequestPrototype→ParseFromString→CallMethod→SerializeToString。五个调用串起了从收到一个字节流到业务方法被调用的完整路径。看懂这一天你就真正理解了 gRPC 的 dispatch 机制是怎么回事。Day 19RpcServer服务端整合messageCallback接入 TinyPBCoder decode解码后进 RpcDispatcherdispatch 完成后 encode send。配置文件驱动启动流程。Day 20RpcChannel客户端异步调用链CallMethod 的完整路径序列化 → connect → writeMessage → readMessage → 反序列化 → closure 回调。per-call 超时控制用EventLoop.runAfter触发取消shared_from_this保证异步回调时对象还活着。RpcChannel 使用独立的 client_loop与服务端 EventLoop 完全隔离——这个设计决策在文档里说清楚为什么这样做。Day 21端到端联调第一个完整 RPC 调用OrderImpl 上线客户端 Order_Stub 发起 makeOrderstd::promise/future封装同步调用接口端到端跑通。这是整个课程的第二个里程碑时刻——你第一次看到自己写的 RPC 框架完成一次真实调用。Day 22ConnectionPool连接池 性能对比演示无池版本每次 RPC 新建连接的开销然后实现连接池空闲队列 mutex 条件变量acquire/release 接口心跳探活剔除失效连接RpcChannel 改造接入连接池。压测数据就是上面那张表——从 P99 10ms 压到 0.2msQPS 从 1.2 万涨到 13.3 万同一套业务代码只换了连接池。Day 23ZooKeeper 服务注册 心跳IP 硬编码的问题在这天被彻底解决。ZooKeeper 临时节点即心跳——session 断开节