< 返回版块

Linyuqiz 发表于 2025-12-06 21:27

Tags:数据传输,数据同步

HarData - 高性能数据传输服务

专为大文件、弱网环境、跨区域传输场景打造的现代化文件同步解决方案

为什么需要 HarData?

在科学计算、跨机房数据同步等场景中,我们经常面临这些挑战:

  • 文件巨大 - 单文件动辄几十GB,传统工具效率低下
  • 网络不稳 - 跨区域、跨运营商网络质量参差不齐
  • 带宽昂贵 - 重复传输相同数据造成资源浪费
  • 断点续传 - 大文件传输中断后需要从头开始

HarData 专为解决这些痛点而生,采用 Rust 语言编写,提供高性能数据传输能力。

核心特性

智能去重

基于 FastCDC 内容感知分块算法,结合 xxHash (弱哈希) + BLAKE3 (强哈希) 双重验证机制。系统会自动识别文件中真正发生变化的部分,只传输差异数据,大幅减少网络传输量。

对于频繁更新的大文件(如日志、数据库、仿真结果),去重效果尤为显著,通常可节省 60%-90% 的传输量。

自适应传输

采用 AIMD (加性增乘性减) 算法动态调整并发度:

  • 传输顺利时逐步增加并发,充分利用带宽
  • 遇到拥塞或错误时快速降低并发,避免网络恶化
  • 并发范围 4-64,自动适应从千兆到弱网的各种环境

双协议支持

同时支持 QUIC 和 TCP 协议,采用 Happy Eyeballs 算法智能选路:

  • QUIC 优先 - 0-RTT 连接、多路复用、内置加密
  • TCP 降级 - 当 QUIC 不可用时自动切换
  • 并发竞速 - 200ms 内选择最优连接

智能压缩

根据文件类型自动选择最优压缩算法:

文件类型 算法 典型压缩率
日志文件 LZ4 15%
JSON/XML/配置 Brotli 20-25%
源代码 Zstd 30%
仿真结果 Zstd 70%
图片/视频/压缩包 跳过 100%

系统架构

┌─────────────────────────────────────────────────────────────────┐
│                         HarData 架构                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─────────────────┐                    ┌─────────────────┐     │
│  │   Sync 控制面    │                    │   Agent 数据面   │     │
│  ├─────────────────┤      QUIC/TCP      ├─────────────────┤     │
│  │  HTTP API:9080  │◄──────────────────►│  QUIC:9443      │     │
│  │  任务调度器      │                    │  TCP:9444       │     │
│  │  全局去重索引    │                    │  文件计算服务    │     │
│  │  CDC 缓存       │                    │  块读取服务      │     │
│  │  SQLite 持久化  │                    │                 │     │
│  │  Web 管理界面   │                    │                 │     │
│  └─────────────────┘                    └─────────────────┘     │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

Sync 节点(控制面)负责任务调度、去重决策、进度追踪,提供 REST API 和 Web UI。

Agent 节点(数据面)负责实际的文件读取、哈希计算、数据传输,可部署多个。

技术亮点

  • Rust 实现 - 内存安全,零成本抽象,无 GC 停顿
  • 全异步架构 - 基于 Tokio 运行时,轻松处理万级并发连接
  • 零拷贝 I/O - Linux 环境下使用 pread/pwrite 系统调用优化
  • 内存池化 - crossbeam 无锁队列实现高效缓冲区复用
  • 断点续传 - SQLite 持久化传输状态,中断后自动恢复

性能参数

特性 数值
最大并发连接 1000
最大并发流 1000/连接
分块范围 256KB ~ 8MB
平均分块 2MB
单块最大 100MB
缓冲池容量 500 x 256KB

快速开始

1. 配置文件

# config.yaml
sync:
  http_bind: "0.0.0.0:9080"
  data_dir: "./data/sync"
  web_ui: true
  regions:
    - name: "datacenter-1"
      quic_bind: "10.0.1.100:9443"
      tcp_bind: "10.0.1.100:9444"

agent:
  quic_bind: "0.0.0.0:9443"
  tcp_bind: "0.0.0.0:9444"
  data_dir: "/data"

2. 启动服务

# 在数据源机器启动 Agent
hardata agent -c config.yaml

# 在控制机器启动 Sync
hardata sync -c config.yaml

3. 创建同步任务

# 通过 API 创建任务
curl -X POST http://localhost:9080/api/jobs \
  -H "Content-Type: application/json" \
  -d '{
    "source_path": "/data/simulation/results",
    "dest_path": "/backup/simulation/results",
    "region": "datacenter-1",
    "job_type": "sync"
  }'

# 查看任务状态
curl http://localhost:9080/api/jobs/{job_id}

4. Web 管理界面

访问 http://localhost:9080 可使用内置的 Web UI 查看任务列表、实时进度、统计信息。

适用场景

  • 科学计算 - HPC 集群数据归档与分发
  • 跨机房同步 - 异地灾备、多活数据中心
  • 增量备份 - 只传输变化部分,节省时间和带宽
  • 弱网传输 - 自适应调节,保证传输可靠性

与其他工具对比

特性 HarData rsync rclone
内容去重 全局级 文件级
协议 QUIC+TCP SSH HTTP
自适应并发 固定
智能压缩 按类型 统一 统一
断点续传 块级 文件级 文件级
Web UI 内置 需配置

开源地址

  • GitHub: https://github.com/Linyuqiz/hardata
  • 问题反馈: https://github.com/Linyuqiz/hardata/issues

HarData - 使用 Rust 构建,为性能而生。

如果这个项目对你有帮助,欢迎 Star 支持!


Ext Link: https://github.com/Linyuqiz/hardata

评论区

写评论

还没有评论

1 共 0 条评论, 1 页