适合有C语言基础,从零开始学习C++并阅读Ceph源码
核心目标:能读Ceph代码,能改小patch,而不是成为语言专家
Ceph 代码库分析:
- C++ 文件: ~17000 个 (.cc/.h) - 核心逻辑
- Python 文件: ~2100 个 - 管理工具/mgr模块
- 构建系统: CMake + Ninja
| 层次 | 目标 | 说明 |
|---|---|---|
| 第一层 | 能看懂 | 能读Ceph核心路径代码,追踪数据流 |
| 第二层 | 能改小patch | 加日志、改简单逻辑、修小bug |
| 第三层 | 能独立设计 | 暂不急,后期再学 |
| 阶段 | 内容 | 时间 | 优先级 | 说明 |
|---|---|---|---|---|
| 00 | 用户态工程思维 | - | P0 | 建立异步/状态机意识 |
| 01 | C++基础语法+面向对象 | 2周 | P0 | 类、继承、虚函数、const |
| 02 | STL+智能指针 | 1周 | P0 | vector/map/shared_ptr |
| 03 | 并发与异步基础 | 2周 | P0 | 线程/锁/CAS/内存模型(重中之重) |
| 04 | 现代C++特性 | 1周 | P1 | auto/lambda/右值引用 |
| 05 | 模板阅读能力 | - | P1 | 能看懂模板定义 |
| 06 | Boost/Seastar | - | P2 | 高性能库基础 |
| 07 | 异步编程实战 | - | P2 | 异步IO/协程 |
| 08 | Shell基础 | 1周 | P0 | 构建/测试/日志收集 |
| 09 | Python基础 | 1周 | P0 | 运维工具/MGR模块 |
| 10 | Ceph源码实战 | - | P0 | 路径追踪、核心逻辑阅读 |
Ceph不是单机文件系统,它有:
- 网络消息
- 集群节点交互
- 请求排队
- 后台线程
- 回调续跑
- 状态转换
读代码时必须能回答:
- 这个请求当前在哪个线程?
- 同步执行还是异步提交?
- 后续谁继续处理?
- 完成通知在哪里发出?
00-user-space-mindset/ ← 异步/状态机思维(新增)
01-cpp-foundation/ ← 从C到C++过渡
02-stl-containers/ ← STL标准库
03-concurrency/ ← 并发基础(重点)
04-modern-cpp/ ← 现代C++特性(新增)
05-templates-advanced/ ← 模板阅读能力
06-boost-library/ ← Boost/Seastar
07-async-programming/ ← 异步编程
08-shell-basics/ ← Shell脚本(新增)
09-python-basics/ ← Python(升级为P0)
10-ceph-code-path/ ← Ceph源码实战(新增)
推荐阅读顺序:
src/include/ # 基础类型定义
└── buffer_fwd.h # bufferptr/bufferlist
└── types.h # 基础类型
└── utime.h # 时间类型
src/common/ # 通用工具
└── config.h # 配置系统
└── dout.h # 日志输出
└── ceph_mutex.h # 锁封装
src/osd/ # OSD核心
src/mon/ # Monitor
src/mds/ # MDS元数据服务
- 理论学习 (1小时): 阅读概念和示例
- 代码实践 (30分钟): 完成练习
- 源码阅读 (30分钟): 对应Ceph代码
# 进入第一阶段
cd 01-cpp-foundation
cat README.md