重磅揭秘!10 分钟 10TB 数据跨云、跨地域传输的技术实践
作者:刘波,星汉未来产研架构部,架构师
在去年末,《阿忠伯聊云原生》的直播栏目中,我们就《不用专线与卡车,云原生技术如何每分钟级迁移TB级数据》发表过一篇有关数据传输的文章。
随着跨云、跨地域海量数据传输的需求日益增长,星汉未来推出了针对海量数据快速、低成本的数据传输产品:数据物流平台 DTExpress,笔者以此为基础,写下了本篇文章,旨在与大家分享基于云原生技术的海量数据搬迁技术,并与大家一起探讨 DTExpress 建设过程中的设计理念和实践思路。
关于 DTExpress
数据物流平台 DTExpress 是星汉未来基于开源 BridgX 引擎打造的海量数据异地传输系统,可以高效支撑业务数据迁移、模型渲染计算、数据中心重建等应用场景,其中 1TB 数据传输可控制在分钟级,10TB 数据传输可控制在 10 分钟级。
背景介绍
2021 年国家首次提出“东数西算”的战略工程,充分发挥西部充裕的电力和资源优势,解决东部存储和算力不足的问题,在西部地区建设数据中心,解决以后台加工、离线分析、存储备份等场景为主的数据需求,“东数西算”的关键挑战是在东西部之间进行海量数据的快速可靠传输。
目前针对海量数据的搬迁,大都依赖于专线,受限于单出口的网络带宽限制,通常每 T 数据传输需要耗时 5 至 6 个小时,企业实际需要传输的数据在十 T 级甚至百 T 级,耗费的时间往往在天级别,严重影响了数据的处理效率。
数据迁移的时间和成本成为衡量技术先进性的核心指标。随着云原生的发展和技术成熟,基于云原生架构理念,借助自研的 BridgX 弹性扩容服务,DTExpress 可在 10 分钟内扩容上万台服务器,将 100T 的数据传输拆分到上万台服务器并行传输,充分利用每台服务器的网络带宽,从而以较少的成本实现 10 分钟百 T 级数据的传输能力。
方案架构
DTExpress 是一站式数据物流平台,依托于 BridgX 的高效算力资源调度能力,将获取到的大量低成本算力节点在数据源所在地和目的地聚合为两个独立的算力集群,数据源所在地集群负责发送数据,数据源目的地集群负责接收数据。其中算力集群中的 pier 服务是我司针对数据传输场景研发的微服务,其内部集成的自研的 TransferKit 组件对数据的读取、写入和传输流程做了特殊优化,可以有效提升数据传输效率。DTExpress 平台主要包括:数据管理系统、任务调度中心、数据存储系统、Pier 服务集群和 TransferKit 组件。
数据物流 DTExpress 总体架构
•数据管理平台:提供界面化操作入口和 api,负责采集、校验数据传输前需要的基础信息(数据源、目的地、数据类型、公有云 AK 等)并生成计划任务。
•任务调度中心:核心调度系统,负责执行计划任务。通过分析和拆解计划任务,结合数据类型和大小等信息计算出需要扩容算计节点的地域和集群规模,使用 BridgX 快速搭建目标算力集群并分配传输任务。
•数据存储组件:实际传输任务中涉及到多种不同的存储类型,如文件存储、快存储、对象存储等,把不同的存储类型看做是虚拟文件系统,不管是通过直接挂载方式还是 API 调用,主要是读写相关操作。跟存储相关的部分抽象下沉到数据存储系统中,上层应用不需关心其中的差异。
•Pier 服务集群:具体执行数据传输任务的应用服务集群,支持数据的加密、传输、校验,确保传输过程安全可靠。
•TransferKit 组件:pier 中使用的数据流传输 SDK,结合数据分块理念和 Zero-copy 技术,加速数据传输流程。
技术设计与实现
数据管理平台
作为数据传输的可视化入口,数据管理平台同时提供了 API 的方式供内部系统调用生成传输任务;为实现跨云传输,其内部实现了对主流公有云平台的 API 对接,自动生成限定权限的 RAM 账号,以读取公有云存储中的数据信息。通过数据管理平台可以对迁移任务的进行创建、管理,查看任务进度等。
数据管理平台
任务调度中心
迁移任务的管理和执行是解耦的,由任务调度中心负责对迁移任务进行拆解和执行。任务调度中心要解决以下的四个核心问题:
(1)如何计算本次迁移任务需要消耗的算力资源规模?
(2)如何快速获取大规模算力节点?
(3)数据发送节点和数据接收节点之间如何建立通信?
(4)传输过程有数据块发送失败怎么办?
上述三个问题分别对应了数据传输中的准备、执行和异常处理三个环节,是确保较低成本下实现数据快速传输的关键。
① 如何计算本次迁移任务需要消耗的算力资源规模?
在已知数据大小的情况下,下面将分析系统是如何计算需要的算力资源规模。以 1TB 数据在阿里云跨域传输为例:
阿里云低配的弹性 ECS(1c2g)能申请到的公网最大带宽为 100Mbps(12.5MB/s),实例基准带宽为 0.1Gbit/s(约 10MB/s) ,因数据传输速率同时受这两个指标的约束,因此 1 分钟内实际可传输的最大数据量为 10MB/s * 60s = 600MB,为确保数据在 1 分钟内完成传输可将单个算力节点负责传输的数据量控制在 500MB 大小。
因此单集群的算力节点数为 1TB/500MB = 2000 台,即数据发送集群和数据接收集群各需 2000 台配置为 1c2g 的算力节点,即可支持 1TB 数据在 1 分钟内完成传输。
② 如何快速获取大规模算力节点?
大部分传统 IT/互联网公司在获取额外算力资源时的流程还处在:申请、审批、购买算力、算力下发、环境/服务初始化、上线、下线、归还的流程,即便在 K8s 化相对普及的今天,在公司内直接申请 4000 核的算力集群也不是一件容易的事情,一是资源准备时间长,二是为缺少资源快速调度的能力,这些都会导致算力集群无法及时交付。怎么办?
传统算力资源扩容模式
在 DTExpress 中,我们使用 BridgX 开源算力调度引擎解决了这个问题,实现了在 2 分钟内准备好两个地域的算力集群,每个集群拥有 2000 台 1c1g 的 ecs 实例,解决了本次数据迁移任务中最基础的算力资源问题。
BridgX 扩容算力资源模式
③ 数据发送节点和数据接收节点之间如何建立通信?
算力和服务集群搭建完成后,两个集群中的节点要如何知道自己的搭档节点是谁,负责哪块数据的传输呢,这里就涉及到了任务调度中心的任务下发机制。
任务下发的基本原则是每个数据接收节点会和一个数据发送节点建立通信,两个节点(接/发)作为一个 p2p 组合只负责传输一块指定大小的数据。任务调度中心在获取到算力集群信息后,结合接收数据的算力集群节点数将源数据逻辑拆分为同等数量的数据块,并为每个接收数据的算力节点分配一个发送数据的算力节点。
任务调度中心将匹对信息发送给接收数据的算力节点,由数据接收节点向数据发送节点主动建立链接,开启数据传输。
节点传输元信息
数据传输任务分发流程
④ 传输过程有数据块发送失败怎么办?
要处理传输过程中数据块传输失败的情况,系统需要有异常数据块的定位能力并支持幂等重传。DTexpress 中采取的方法是对数据块进行逻辑编号,系统可以根据逻辑编号准确定位数据块的偏移位置和大小,传输中记录下失败的数据块并择机重试,具体实现参见 3.3 Transferkit 章节描述。
Transferkit 数据传输组件
Transferkit 是 DtExpress 项目的数据传输组件。Pier 集群中的算力节点实际使用 Transferkit 建立传输链接、初始化 Write/Read 模块、缓存数据块、执行数据传输。
Transferkit 数据传输示意图
数据发送集群节点(sender)根据接收的启动参数,使用 Transferkit 将指定数量的 block 读入内存等待传输。当内存中的 block 因完成传输导致数量不足时 Transferkit 将持续读取新的 block 到内存中,将内存的 block 数量维持在一个固定值(若 block 充足)。
数据接收集群节点(receiver)根据接收的启动参数,使用 Transferkit 在内存中开辟出能够容纳指定数量 block 的空间并开始接收 block,同时并行将读入的 block 异步写入目标存储中。block 传输流程如下:
○从 0 号 block 开始,sender 向 receiver 申请传输指定编号的 block;
○receiver 读取指定编号的 block 并向 receiver 进行传送;
○sender 记录传输结果(成功/失败)并继续下一个编号的 block 请求和传输;
○完成全部 block 的传输,bucket 传输成功;
○如果传输失败,receiver 可以继续申请重传失败的 block;
数据存储 SDK
数据存储 SDK 将不同的存储类型做了封装封装,并抽象出 Read,Write 接口供上层调用, Transferkit 即通过此 SDK 实现对底层数据的读写操作。
数据存储 SDK
执行流程
以上介绍了各子系统、模块的功能和设计,那么一次完整的数据传输流程是什么样的呢?一次完整的数据传输流程主要包括以下 5 个步骤:
数据传输过程还涉及到数据的压缩、加密、校验,断点续传等,这些环节共同保证了 DTExpress 利用公网进行数据传输的安全性,稳定性和准确性。具体的加解密算法和校验方式不一而足,不同环境和场景下也要通过不同的选择来提升系统的整体传输效率。
未来规划•多云接入:为支持更丰富的跨云数据传输场景,DTExpress 将持续对接更多公有云资源(AWS, Azure, 百度云等),目前支持的有阿里云、华为云、腾讯云。
•传输效率提升:数据跨云传输的效率受限因素有很多,网络带宽限制、算力资源基础带宽限制、数据源读取和写入限制、是否支持随机读写等,这些都会影响到最终的传输效率。要实现不同场景下的高效数据传输依然有很多细节需要不断打磨、完善,需要在实践中持续摸索、尝试。
•SaaS 化支持:当前 DTExpress 支持私有化部署,SaaS 化建设也在持续开发中。针对 SaaS 化所需的一些特有功能模块目前处于规划设计中。
招聘信息
星汉未来诚招 K8s 高级工程师,技术专家,base 北京、合肥。负责云原生基础产品后端研发,涉及多云对接、K8s 调度、AIOps、弹性扩缩容等功能。
简历投递至 hr@galaxy-future.com
点击阅读原文,了解数据物流平台 DTExpress 的更多功能。
评论