容量与延迟,为什么同时成为问题?
特征容量会沿多个维度同时增长:实体数量、特征宽度、新鲜度窗口,以及同时服务的模型版本。在新功能上线或大范围候选获取期间,活跃群体可能比小热集稳定下来的速度变化得更快。
将低频特征放入存储层可以节省内存,但一次迟到的查询就可能阻塞推理请求。应测量完整特征向量组装时间的分布,包括冷实体和缺失特征;存储整体平均耗时并不等于模型的服务预算。
为这条数据路径而设计
Lavik 在架构中的位置
将 Lavik 用作应用预先准备的特征的在线键值服务层。NVMe SSD 承载值容量,内存键索引支持查询。特征计算、事件时间正确性、模式管理与离线训练数据仍由现有系统负责。
优先评估:可重建的预计算特征值,每个实体有相当的值数据量,并有明确的物化流水线。
影响采用结果的设计决策
对服务契约进行版本管理
根据客户端实际执行的操作选择打包字符串或哈希。记录中包含模式/模型版本和数据时间戳。为缺失字段定义默认值,并独立于存储过期时间定义新鲜度截止条件。
计算完整查询扇出
分别预算实体读取、特征解码、关联与推理耗时。用真实特征宽度测试有界 HMGET/MGET 请求。对单条记录进行原子写入,并不会自动提供跨所有实体的事件时间一致快照。
验证连接器,而不只是命令名称
将连接器初始化、Lua 调用、流水线、字段过期和序列化映射到版本化命令参考。已验证的客户端示例可作为起点,但不代表已认证 Feast 或其他特征存储连接器。为回填限流和延迟后的对账做好计划。
在 Lavik 上执行的命令示例
Docker 测试通过以下是使用示例数据、独立实例和真实回复的功能测试。它验证展示的命令序列,不是该行业工作负载的性能或端到端正确性测试。
查看实际请求与回复
> HSET features:model7:user42 schema 7 as_of 2026-09-21T00:00:00Z visits_7d 12
3
> HMGET features:model7:user42 schema visits_7d missing_feature
["7","12",null]
> HGET features:model7:user42 as_of
"2026-09-21T00:00:00Z"
> EXPIRE features:model7:user42 600
1版本与验证范围
lavik 0.1.0-beta.1 · Minimal 发布包 · aarch64 · 2026-09-21
离线、只读容器根文件系统;临时数据目录,逐场景清空。示例使用已认证的本地连接。TTL 返回范围与具体参数保存在验证记录中。
执行记录 ↗用什么标准决定迁移?
先写下业务预算,再做流量回放。以下标准需要通过你自己的系统验证;已发布基准是起点。
冷实体推理
回放生产实体分布,并以完整特征宽度增加均匀访问压力测试。
特征组装 p99 满足推理链路分配的预算,缺失或过期特征比例可接受。
在线服务期间回填
刷新或回填第二个模型版本时持续读取,并保留应用时间戳。
读取截止时间与新鲜度目标同时满足;发布程序不会用旧事件覆盖新版本。
连接器正确性
测试真实连接器调用、部分记录、缺失实体、重连与反序列化失败。
在引入推理流量前,返回值与回退决策符合现有服务契约。
这是键值服务设计,并非内置特征平台、向量索引或时间点正确的训练关联。高争用的小计数器与已发布的 1 KiB GET/SET 基准属于不同负载。
从业务规模推导容量
值数据量 ≈ 实体数 × 序列化特征字节数 × 同时服务的版本数
更低的值容量成本
当 DRAM 每 GiB 的价格是 NVMe SSD 的 20 倍,相同值数据的介质容量成本为 1/20,即降低 95%。索引内存、CPU、副本、存储放大与恢复余量仍需计入完整部署。
用你的容量价格计算 →