Dragonfly-一个基于p2p的高效文件传输系统

概要:Dragonfly是阿里开源的一款基于 P2P 的智能镜像和文件分发工具。它旨在提高文件传输的效率和速率,最大限度地利用网络带宽。本文对Dragonfy的整体功能进行简单的介绍。

1. 概述

1.1. 什么是dragonfly

        Dragonfly 是阿里开源的一款基于 P2P 的智能镜像和文件分发工具。它旨在提高文件传输的效率和速率,最大限度地利用网络带宽。

尤其是在分发大量数据时,例如应用分发、缓存分发、日志分发和镜像分发。它能让所有类型的文件、镜像或数据分发变得简单而经济。

1.2. 核心功能

  • 通过统一的回源适配层及实现支持各种不同类型存储(HDFS、各云厂商的存储服务、Maven、YUM等等)的P2P文件分发能力
  • 支持更多的分发模式: 主动拉取、主动推送、实时同步、远程复制、自动预热、跨云传输等等
  • 系统之间分离解耦,Scheduler与Cdn插件化,且支持按需部署,可轻可重,可内可外,灵活满足不同场景的实际需要
  • 基于 grpc 全新设计的 P2P 协议框架,效率及稳定性更佳
  • 支持加密传输、基于账号的传输鉴权与限流、多租户隔离机制
  • 支持更高效的IO方式: 多线程IO、内存映射、DMA等
  • 支持动态压缩、内存文件系统以及更高效的调度算法,提升分发效率
  • 客户端通过 C/S 模式支持第三方软件原生集成蜻蜓的 P2P 能力
  • 产品化能力: 支持文件上传、各种分发模式的任务管理、数据视图以及全局管控等功能
  • 内外一套,核心特性相互共享,非通用特性各自扩展
  • 与生态进一步集成: Harbor、Nydus(镜像按需下载解决方案)、各云厂商仓库服务等

2. 整体架构

2.1. 架构图

2.2. 组件功能架构

3. 子系统功能

3.1. Dfget

       文件下载命令,类似wget。

3.2. Dfdaemon

      dfget的守护进程,dragonfly的client端,实现和scheduler、cdn和文件源的交互,完成文件下载。主要实现以下功能:

  • 多源适配能力,包括目录下载和 Range 下载功能
  • 高效 IO 机制
  • 多下载任务的 IO 调度(高 IO 吞吐量)
  • 减少文件读写次数:改进临时文件存放方式、文件完整性校验改进
  • DMA 读写
  • 流式传输
  • 客户端下载 Proxy 能力(http & https)
  • 单服务进程启动(CS 模式)以及常驻和非常驻模式
  • 失败回源处理
  • 本地缓存能力(客户端 seeder 模式)
  • 客户端优雅升级与部署方案

3.3. scheduler

       scheduler是整个系统的调度中心,完成task、peer的管理和调度,主要实现如下功能:

  • 基于多维度的 P2P 调度策略
  • 智能化调度算法(高级)
  • 调度结果可量化对比以及支持 A/B Testing
  • 调度策略插件化以及 CDN 子系统插件化
  • 元信息下发管道
  • 客户端下载结果和回源结果统计以及与监控服务的对接
  • 可对接prometheus和jaeger。

3.4. CDN

      CDN是Dragonfly的文件下载及分发模块,主要实现从source下载数据,缓存及供其他peer下载的功能。具体实现的功能如下:

  • 多源适配能力,包括目录下载和 Range 下载功能
  • DMA 读写
  • 回源中转
  • 分发预热
  • 动态压缩
  • 存储管理(种子存放、磁盘清理、块级存储)
  • 内存文件系统
  • 安全传输(对称加密、完整性校验等)
  • 存储介质插件化

3.5. Manager

  manager是系统的管理端,用来管理scheduler和cdn,主要实现以下功能:

  • 动态配置管理
  • 数据大盘 & 带宽计量
  • 文件上传 & 分发管理与管控
  • 文件同步管理
  • 账号 & 权限控制
  • 订阅 & 通知
  • 多租户管理
  • 命令通道服务(通道合一)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值