背景
网络下载
提起网络下载领域,你应该首先会想到基于 TCP/IP 协议簇的 C/S 模式。这种模式希望每一个客户机都与服务器建立 TCP 连接,服务器轮询监听 TCP 连接并依次响应,如下图:
上世纪末期,基于 C/S 模式的思想,人们发展了 HTTP 、 FTP 等应用层协议。然而 C/S 模式的弊端很明显:服务器的负载过大,下载速率过慢。随着互联网规模的增大以及客户对于下载数据大小,下载速率等需求的上升,这些弊端被不断放大。
P2P 下载原理
基于上述背景,有人结合 P2P 网络与负载均衡的思想,提出 P2P 下载模式。这种模式不再把所有的下载压力丢给服务器,服务器只负责传递文件元数据,真正的文件下载连接建立在客户机与客户机之间。同时一个文件可以被分片为多个块,同一个文件中不同的块可以在不同的客户机之上下载,使得下载文件在 P2P 网络中动态流通,大幅提升了下载效率,如下图:
去中心化的 P2P 下载基于 DHT 技术,它采用分布式全网方式来进行信息的存储和检索。所有信息均以哈希表条目形式加以存储,这些条目被分散地存储在各个节点上,从而以全网方式构成一张巨大的分布式哈希表。在此基础上做到对单服务器的去中心化,哈希表负责对负载的分摊,将全网负载均摊到多个机器之上。
Dragonfly 简介及架构概述
Dragonfly 是一款基于 P2P 的智能镜像和文件分发工具。它旨在提高大规模文件传输的效率和速率,最大限度地利用网络带宽。在应用分发、缓存分发、日志分发和镜像分发等领域被大规模使用。
原理
Dragonfly 结合 C/S 架构与 P2P 架构的优点。它提供面向客户的 C/S 架构下载模式。同时它也提供面向服务器集群的 P2P 回源模式,与传统 P2P 不同的是,对等网络建立在 Scheduler 内部,目标是最大化 P2P 内部下载效率,如下图: