冻结模式#

概述#

冻结模式是 LMCache 控制器中的一种安全机制,旨在防止在关键系统事件期间出现数据不一致和潜在的数据丢失。当控制器检测到严重的状态不一致或正在进行重启/恢复时,它可以激活冻结模式,以暂时限制某些操作。

动机#

冻结模式的主要动机包括:

  1. 控制器故障恢复 - 当控制器崩溃并重启时,它可能需要与工作节点进行完全同步 - 在此同步期间,系统状态可能不完整或不一致

  2. 状态不一致检测 - 当检测到控制器与工作节点之间存在严重的状态不匹配时 - 这可能是由于网络问题、工作节点故障或意外的系统行为导致的

  3. 完全同步安全 - 在上述事件触发的完全同步操作期间 - 为了防止在状态重建时可能导致逐出或接纳事件的操作

目的#

当冻结模式被激活时:

  • 所有可能生成逐出/接纳事件的操作均被禁用

  • 仅允许读取操作和基本查询

  • 系统本质上进入了一个“只读”状态,以进行缓存管理操作。

  • 这可以防止在恢复/同步过程中数据损坏或丢失。

当前实现状态#

当前实现:

  1. 冻结模式机制 - StorageManager 支持冻结模式 - 当处于冻结状态时,仅使用 LocalCPUBackend 进行检索操作 - 其他存储后端暂时不参与活动使用

  2. API 端点 - 冻结模式可以通过控制器 API 切换 - 可以查询状态以检查系统是否处于冻结模式

尚未实现:

  1. 自动触发 - 控制器尚未自动触发冻结模式 - 目前需要通过 API 手动激活

  2. 完全同步集成 - 触发冻结模式的完整同步过程尚未实现 - 控制器重启检测和自动冻结模式激活尚未开发

  3. 恢复完成 - 同步完成后自动解冻尚未实现 - 目前需要手动干预以退出冻结模式

使用方法#

手动激活/停用:

冻结模式可以通过控制器 API 手动控制:

# Enable freeze mode
curl -X POST http://localhost:9000/api/v1/freeze -d '{"enabled": true}'

# Disable freeze mode
curl -X POST http://localhost:9000/api/v1/freeze -d '{"enabled": false}'

# Check freeze mode status
curl http://localhost:9000/api/v1/freeze/status

冻结模式下的系统行为:

  • 缓存检索操作继续正常工作

  • 仅使用 LocalCPUBackend 进行所有检索。

  • 缓存接纳/逐出操作被阻止

  • 对存储后端的写入操作被阻止

  • 监控和健康检查正常进行