注意:说明:
注意:当前写缓存能力为公测功能,请 联系我们 申请公测资格。
一、功能概述
使用写缓存,你可以获取以下收益:
·热点数据直接写入 SSD 缓存池,获得高吞吐和低延迟的写入表现。
·异步将数据稳定写入 COS,削峰填谷,有效应对业务突发上传流量。
·写吞吐基于分布式缓存线性扩展,满足大规模并发写入需求。
二、工作原理
注意:说明:
注意:写缓存采用读写独立 Worker 池架构。写缓存能力作为 GooseFS 集群的附加属性,需独立开启;读缓存池(LRU)与写缓存池(FIFO)各自独立运行,不互相干扰。
写缓存的完整写入流程如下:
1. 客户端将 Block 数据写入写缓存 Worker,支持多副本写入。
2. 客户端提交持久化任务到 JobMaster,同时记录文件 CRC。
3. JobMaster 将持久化任务分发给 JobWorker。
4. JobWorker 从本地读取数据,上传数据及 CRC 至 COS,由 COS 完成一致性校验。
5. JobWorker 上报任务结果(包含文件 CRC)。
6. JobMaster 确认文件 CRC,更新持久化状态。
注意:在数据持久化完成之前,未持久化的数据可读,但不可被淘汰。
三、数据可靠性保障
写缓存通过以下机制保障数据可靠性:
| 保障机制 | 说明 |
| 多副本落盘 | 支持配置单副本、双副本、三副本,副本数越多可靠性越高,可根据业务需求灵活选择 |
| 端到端 CRC 校验 | 客户端接收数据时会计算 CRC,持久化至 COS 时会再次计算 CRC,保证写入数据与持久化数据 CRC 一致 |
| Raft 协议 + DB 同步 | 通过 Raft 协议和 DB 同步保证持久化任务信息不丢失,即使节点故障也可继续执行持久化任务 |
不同副本数对应的数据可靠性如下:
| 副本数 | 数据可靠性 |
| 单副本 | 99% |
| 双副本(默认) | 99.999% |
| 三副本 | 99.9999999%(9 个 9) |
四、产品规格
写缓存按照实际物理容量售卖,实际业务容量与副本数相关。例如购买30TB写缓存容量,当选择2副本时,实际可缓存的业务容量为15TB;当选择3副本时,实际可缓存容量为10TB。
五、性能规格
写缓存与读缓存规格一致,提供200MBps/TB的吞吐能力,QPS 与时延的参考性能数据如下(测试场景为单客户端):
| 是否拆分读写客户端 | 文件大小 | QPS | 时延(ms) | 吞吐(MBps) |
| 否 | 4KB | 近千级 | > 50ms | 可平行扩展 |
| | 1MB | 近千级 | > 50ms | |
| 是 | 4KB | 近万级 | < 10 | |
注意:说明:
六、使用限制
若需修改副本数,需先关闭写缓存,重新配置后再开启。
七、COS 上传毛刺削峰
场景特点: 具有突发上传流量的业务,包括监控日志上传、数据库备份上传、AutoMQ 消息队列持久化、RSS 数据回传、AI Agent 中间结果存储、训练中间数据上传等。
GooseFS 写缓存方案: 按吞吐需求购买容量,通过写缓存池提供稳定的高吞吐写入,通过异步持久化机制完成数据持久化,避免 COS 吞吐限制造成业务瓶颈。
八、临时数据存储(无需持久化)
场景特点: 上层业务数据可重新计算,且不要求数据持久化的场景,例如训练 checkpoint 临时写入等。
GooseFS 写缓存方案: 使用单副本写缓存且不开启持久化,获得最高写入性能和最低存储成本;同时得益于缓存架构特性,无需管理存储空间,GooseFS 写缓存容量到达上限后通过 FIFO 淘汰先写入数据。
九、计费说明
写缓存与读缓存定价一致,读缓存容量与写缓存容量之和即为集群总容量,容量定价可参见 GooseFS 定价概述。
十、相关操作
·如需开启写缓存,请参见 创建 GooseFS 集群 中全托管部署模式下的操作,开启写缓存。
·如需查询路径级别持久化状态,可使用 GooseFS 命令行工具 执行持久化状态查询命令,详情如下:
·命令格式
goosefs fs checkPersist [-R] [-n <N>] <path> …
·命令参数说明
| 参数 | 说明 | 是否必选 |
| <path> | 目标路径,支持多个、支持通配符(与 ls 一致) | 是 |
| -R | 递归遍历子目录;不加则仅统计直接子文件 + 子目录(与 ls -R 语义一致) | 否 |
| -n <N> | 控制未持久化明细展示条数;可选值:正整数、0(仅打印汇总)、-1(展示全部) | 否 |
·输出参数说明
·STATE:表示文件持久化状态,各枚举值说明如下:
| 枚举值 | 说明 |
| TO_BE_PERSISTED | 待持久化 |
| PERSISTED | 已持久化到 UFS |
·COUNT:该状态下的文件数量
·PERCENT:该状态下文件数量占<path>目录下总文件数的比例
·示例
./bin/goosefs fs checkPersist /gz-cos2/1255CheckPersist: /gz-cos2/1255 (recursive=false, elapsed=0.05s, dirs=0) STATE COUNT PERCENT ————— ———- ——- TO_BE_PERSISTED 0 0.00% PERSISTED 1000 100.00% ————— ———- ——- Total 1000 100.00%All files under /gz-cos2/1255 are persisted.