技术 Curve源码及核心流程深度解读 Posted on 2022-05-25 by aspirer 近期阅读了一遍Curve源码,做了相关流程的梳理分析,原文内容特别长,而且还在更新中,就不复制过来了,这里仅列出目录结构。 原文链接:Curve源码及核心流程深度解读 1. 预备知识 1.1. 代码目录结构 1.2. brpc (许超杰) TODO protobuf protobuf 提供支持rpc的类: RPCChannel RPCController EchoService 【生成】 EchoService::stub, 即EchoService_stub 【生成】 bthread & excution queue bvar&metric client端主IO路径 server端主IO路径 1.3 braft(李小翠)TODO braft线程模型 日志复制 applyindex snapshot 配置(成员)变更 对braft的改造 1.4. gflags及配置管理模块 gflags Curve自有配置模块 1.5. 异步&回调 CurveBS 客户端 服务端 CurveFS 客户端 服务端 1.6. Caches 元数据内存缓存 CurveBS: CurveFS: 数据内存缓存 数据磁盘缓存 1.7. Throttle CurveFS S3 client限流 服务端限流 CurveBS卷QoS控制 1.8. Filepool(chunk预分配) chunkfilepool walfilepool 1.9. Locks 1.10. 内存管理 1.11. 对外接口 CurveBS CurveFS 1.12. 其他关键设计点? — 待定 2. CurveBS代码走读示例 2.1. NEBD服务 2.2. 创建卷 — 程义 创建空卷 创建clone卷 2.3. 读IO流程 — 吴宏松 from sdk from nbd from qemu 2.4. 写IO流程 — 吴宏松 from sdk from nbd from qemu 2.5. 创建卷快照流程 — 胡遥 2.6. 数据节点扩容流程 相关资源创建流程 资源上报流程 扩容后卷空间分配流程 TODO 2.7. 数据恢复流程 — 胡遥 2.8. 心跳上报流程 2.9. MDS选主流程 3. CurveFS代码走读示例 3.1. FUSE 3.2. 创建文件系统 3.3. 删除文件系统 — 程义 3.4. 创建inode — 程义 3.5. 写IO流程 S3存储引擎 内存buffer chunk数据合并逻辑 CurveBS volume存储引擎 3.6. 读IO流程 S3存储引擎 CurveBS volume存储引擎 3.7. 元数据节点扩容流程 3.8. 元数据恢复流程 3.9. MDS选主流程 curve aspirer View all posts by aspirer →