冻结模式#
概述#
冻结模式是 LMCache 控制器中的一种安全机制,旨在防止在关键系统事件期间出现数据不一致和潜在的数据丢失。当控制器检测到严重的状态不一致或正在进行重启/恢复时,它可以激活冻结模式,以暂时限制某些操作。
动机#
冻结模式的主要动机包括:
控制器故障恢复 - 当控制器崩溃并重启时,它可能需要与工作节点进行完全同步 - 在此同步期间,系统状态可能不完整或不一致
状态不一致检测 - 当检测到控制器与工作节点之间存在严重的状态不匹配时 - 这可能是由于网络问题、工作节点故障或意外的系统行为导致的
完全同步安全 - 在上述事件触发的完全同步操作期间 - 为了防止在状态重建时可能导致逐出或接纳事件的操作
目的#
当冻结模式被激活时:
所有可能生成逐出/接纳事件的操作均被禁用
仅允许读取操作和基本查询
系统本质上进入了一个“只读”状态,以进行缓存管理操作。
这可以防止在恢复/同步过程中数据损坏或丢失。
当前实现状态#
当前实现:
冻结模式机制 - StorageManager 支持冻结模式 - 当处于冻结状态时,仅使用 LocalCPUBackend 进行检索操作 - 其他存储后端暂时不参与活动使用
API 端点 - 冻结模式可以通过控制器 API 切换 - 可以查询状态以检查系统是否处于冻结模式
尚未实现:
自动触发 - 控制器尚未自动触发冻结模式 - 目前需要通过 API 手动激活
完全同步集成 - 触发冻结模式的完整同步过程尚未实现 - 控制器重启检测和自动冻结模式激活尚未开发
恢复完成 - 同步完成后自动解冻尚未实现 - 目前需要手动干预以退出冻结模式
使用方法#
手动激活/停用:
冻结模式可以通过控制器 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 进行所有检索。
缓存接纳/逐出操作被阻止
对存储后端的写入操作被阻止
监控和健康检查正常进行