Repository navigation
feat(storage): implement multi-write v2 metadata partitioning - #5741
Conversation
…length from 4096 to 8192
…heckpoint chunks and sealed segment
…heckpoint chunks and sealed segment
基线服务 write 压测测试口径
本轮测试衡量 OpenViking 写请求前台返回速度。请求不等待 semantic / 测试期间服务日志出现 Volcengine embedding 三轮结果
平均值
原始结果{
"average": {
"seconds": 1190.97,
"qps": 8.4,
"avg_ms": 1784.82,
"p50_ms": 1713.03,
"p95_ms": 2598.72,
"p99_ms": 2740.11,
"max_ms": 3083.32,
"rounds": 3,
"total_each_round": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success_each_round": [
10000,
10000,
10000
],
"errors_each_round": [
{},
{},
{}
]
},
"rounds": [
{
"round": 1,
"service": "baseline",
"base_url": "http://127.0.0.1:19331",
"prefix": "base-round1-1791615199",
"total": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success": 10000,
"errors": {},
"seconds": 1170.523,
"qps": 8.54,
"avg_ms": 1754.06,
"p50_ms": 1662.3,
"p95_ms": 2596.0,
"p99_ms": 2750.06,
"max_ms": 2994.17
},
{
"round": 2,
"service": "baseline",
"base_url": "http://127.0.0.1:19331",
"prefix": "base-round2-1791616369",
"total": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success": 10000,
"errors": {},
"seconds": 1196.662,
"qps": 8.36,
"avg_ms": 1793.58,
"p50_ms": 1732.15,
"p95_ms": 2577.52,
"p99_ms": 2705.22,
"max_ms": 2885.17
},
{
"round": 3,
"service": "baseline",
"base_url": "http://127.0.0.1:19331",
"prefix": "base-round3-1791617566",
"total": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success": 10000,
"errors": {},
"seconds": 1205.739,
"qps": 8.29,
"avg_ms": 1806.83,
"p50_ms": 1744.65,
"p95_ms": 2622.63,
"p99_ms": 2765.06,
"max_ms": 3370.63
}
]
}新版服务 write 压测测试口径
本轮测试参数与基线服务一致。 三轮结果
平均值
原始结果{
"average": {
"seconds": 302.63,
"qps": 33.05,
"avg_ms": 453.53,
"p50_ms": 443.92,
"p95_ms": 540.4,
"p99_ms": 645.07,
"max_ms": 1141.27,
"rounds": 3,
"total_each_round": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success_each_round": [
10000,
10000,
10000
],
"errors_each_round": [
{},
{},
{}
]
},
"rounds": [
{
"round": 1,
"service": "v2",
"base_url": "http://127.0.0.1:19332",
"prefix": "v2-round1-1791618898",
"total": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success": 10000,
"errors": {},
"seconds": 299.973,
"qps": 33.34,
"avg_ms": 449.56,
"p50_ms": 441.07,
"p95_ms": 526.48,
"p99_ms": 618.07,
"max_ms": 1277.68
},
{
"round": 2,
"service": "v2",
"base_url": "http://127.0.0.1:19332",
"prefix": "v2-round2-1791619198",
"total": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success": 10000,
"errors": {},
"seconds": 305.607,
"qps": 32.72,
"avg_ms": 458.01,
"p50_ms": 445.91,
"p95_ms": 558.19,
"p99_ms": 692.4,
"max_ms": 1077.31
},
{
"round": 3,
"service": "v2",
"base_url": "http://127.0.0.1:19332",
"prefix": "v2-round3-1791619503",
"total": 10000,
"concurrency": 15,
"payload_bytes": 1024,
"success": 10000,
"errors": {},
"seconds": 302.298,
"qps": 33.08,
"avg_ms": 453.02,
"p50_ms": 444.79,
"p95_ms": 536.53,
"p99_ms": 624.73,
"max_ms": 1068.83
}
]
}结论在相同测试条件下,新版服务的写请求前台返回速度明显优于基线服务。 测试条件:
平均值对比:
提升幅度:
本轮结果说明:在当前 |
zhoujh01
left a comment
There was a problem hiding this comment.
V2 的分区化与 primary-only 异步写路径方向合理,但当前发现两处会使已成功的 primary 变更永久无法收敛到 backup 的可靠性缺口,因此请求修改。
qin-ptr
left a comment
There was a problem hiding this comment.
分区化、前台写入与备份追平解耦的方向合理,现有 NAS 压测也支持前台延迟改善。但当前正常路径仍有四处需要在合并前解决的问题:单文件改名重复复制、离线备份阻止已吸收日志回收、filesystem provider 全量重写日志头,以及无变化的系统目录被反复全量复制。
六条行级评论包含四条必须修复和两条非阻塞设计建议。此前已解释并关闭的 flush 失败处理、Redis 持久性讨论不重复提出。
qin-ctx
left a comment
There was a problem hiding this comment.
账户删除后复用同一 ID 的正常路径会在备份中残留旧账户文件,需要在合并前处理。
Description
Implement Multi-Write V2 metadata partitioning for OpenViking storage. This replaces the legacy directory-sidecar and global-sequence model with account-scoped partition routing, append-only segments, checkpoints, background catch-up, and metadata GC.
This PR also removes legacy sync-status / sync-retry surfaces and updates API, CLI, configuration, and documentation to match the V2 async backup model.
Human Involvement
Related Issue
Architecture Discussion: #5863
Detailed Design: #5865
Type of Change
Changes Made
Testing
Verified by GitHub Actions:
Checklist
Screenshots (if applicable)
N/A
Additional Notes
This is a breaking storage-layer change for legacy multi-write management surfaces. Normal file read/write APIs remain available, but the old sync-status / sync-retry APIs and related CLI commands are removed. V2 uses async backup catch-up and primary-only metadata durability by design.