知识卡片
代理读写与promote解耦即时响应与缓存预热
内容
[[CacheTier五种模式应对缓存未命中的不同取舍|proxy 模式]]处理缓存未命中时,do_proxy_read/do_proxy_write 只负责把这一次请求转发给 data pool、拿到结果就直接回给客户端,并不会顺手把数据写入 cache pool;真正”把这个对象搬进缓存供以后使用”是另一个独立的 promote_object 操作,通常在代理请求完成后视情况再异步触发。把”满足这次请求”和”预热缓存供下次请求用”拆成两个独立步骤,使得系统可以按需决定要不要为这次访问支付缓存预热的额外代价——缓存已经很满、这是一次性访问的冷数据时可以只代理转发不预热,避免无谓的数据搬运;确实值得缓存时再单独触发 promote。这是”完成任务”和”顺便优化”不应该被绑死在一起同步执行的例子。
参考来源
《Ceph源码分析》第13章《Ceph自动分层存储》