知识卡片

Librados三层职责划分

专业/工作 · 236.a.2.a

内容

Librados 内部按管辖范围拆成三层:RadosClient 管理整个集群层面和跨 pool 的事务(连接 Monitor、创建/删除/查询 pool、初始化 [[Finisher解耦异步完成通知与调用线程|Finisher]] 和定时器);IoCtxImpl 是单个 pool 的操作上下文,一个 pool 对应一个实例,负责该 pool 内对象的增删读写;Objecter(属于 OSDC 层)只管一件事——把已经封装好的操作计算出目标 OSD 并通过网络发出去,其内部寻址仍依赖 [[对象寻址的两级映射设计|hash+CRUSH 两级映射]]。三层各自的作用域逐级收窄(集群→pool→单次请求寻址),调用链自上而下传递,每一层都不需要知道上一层是怎么决定要做这件事的,只管把自己这一层的职责做完。

参考来源

《Ceph源码分析》第5章《Ceph客户端》