OSS_PIPE:Rust 编写的大规模文件迁移工具
文盘 rust 好久没有更新了。这段时间笔者用 rust 写了个小东西,跟各位分享一下
背景
随着业务的发展,文件数量和文件大小会急剧增加,文件迁移的数量和难度不断攀升。oss_pipe 是 rust 编写的文件迁移工具,旨在支撑大规模的文件迁移场景。
编写 oss_pipe 的初衷
•同类产品面临的问题
•rust 语言带来的技术红利
•oss_pipe 的基本功能
常见的 oss 迁移工具
•ossimport 阿里出品,java 语言编写,支持存量增量同步,支持大部分云场的 oss 数据源
•ossutil 阿里出品,go 语言编写,迁移只是辅助功能,主要是阿里对象存储的管理客户端
•COS Migration 腾讯出品,java 语言编写 文档中未见增量迁移部分
同类产品面临的问题
•编程语言方面,java golang 这些带 vm 的语言容易产生 OOM
•功能相对齐全的工具,如 ossimport 需要部署 java runtime 环境,安装步骤繁琐
•运行期间不仅需要条件本身参数还需要,复杂场景下还需要对 jvm 进行调优,对现场工程师要求较高
rust 语言带来的技术红利
•内存安全性:通过所有权、借用和生命周期机制,Rust 在编译时确保内存安全,无需垃圾回收。
•性能:接近 C/C++ 的性能,无额外运行时开销,适合系统级编程。
•并发处理:所有权模型简化并发编程,减少数据共享和复杂性。
•可靠性和生产力:强类型系统、模式匹配和丰富的工具链提高代码质量和开发效率。
•多平台支持:支持多种操作系统和硬件平台,便于跨环境部署。
•现代语言特性:结合函数式和泛型编程,同时保持与传统系统编程语言的兼容性。
•社区和生态系统:活跃的社区和成熟的生态系统,支持快速的语言发展和项目构建。
oss_pipe 的基本功能
•主要功能全量迁移存量迁移增量迁移断点续传大文件拆分上传正则表达式过滤线程数与上传快大小组合控制带宽
•存储适配及支持列表京东云对象存储阿里云对象存储腾讯云对象存储华为云对象存储 AWS 对象存储 Minio 本地
实现机制
性能测试
•文件上传 为了不让 io 拖后腿选择了京东云增强型 ssd 任务配置
从监控上课,传输网络最高峰值超过 1G,磁盘 io 基本满载,1.3T 数据最好成绩 1689 秒
•oss 间同步
任务配置
1.3T 内网间传输 2110 秒 完成
写在最后 oss pipe 还在开发阶段,我们也愿意和有需求的小伙伴功能成长。由于 oss 签名的限制,大量的 cpu 消耗在计算前面上面,为了解决这个问题我们魔改了 aws s3 rust 版本的 sdk,有在迁移场景有需求的同学可以私信找我。
作者:京东科技 贾世闻
来源:京东云开发者社区
版权声明: 本文为 InfoQ 作者【京东科技开发者】的原创文章。
原文链接:【http://xie.infoq.cn/article/45ba1dad9b72393087f47a4fd】。文章转载请联系作者。
评论