Add design document (#368)
* docs: add design docs Signed-off-by: Gaius <gaius.qi@gmail.com> * docs: change images path Signed-off-by: Gaius <gaius.qi@gmail.com> * docs: optimize markdown Signed-off-by: Gaius <gaius.qi@gmail.com> * docs: change design Signed-off-by: Gaius <gaius.qi@gmail.com> * docs: change design Signed-off-by: Gaius <gaius.qi@gmail.com>
|
|
@ -0,0 +1,96 @@
|
||||||
|
# 产品思考与设计
|
||||||
|
|
||||||
|
## 定位
|
||||||
|
提供企业级(高效、稳定、安全、低成本、产品化)的文件分发与管理服务,并成为在该领域的云原生最佳实践与标准解决方案。
|
||||||
|
|
||||||
|
## 解决的问题
|
||||||
|
|
||||||
|
**架构设计缺陷:** 现有架构很难满足日益增长的文件分发业务需要,在稳定性、效率以及安全性等方面逐渐暴露出不足,并受到越来越多的挑战
|
||||||
|
|
||||||
|
**价值渗透不足:** 当前只支持 HTTP 回源协议,针对其他类型的存储(HDFS、各云厂商的存储服务、Maven、YUM 等等)缺乏适配
|
||||||
|
|
||||||
|
**分发模式单一:** 目前只支持主动拉取模式,缺少主动推送以及主动同步能力
|
||||||
|
|
||||||
|
**产品化能力缺失:** 没有提供完善的控制台功能,比如分发任务管理与管控、数据大盘、多租户以及权限控制等等
|
||||||
|
|
||||||
|
## 核心能力
|
||||||
|
|
||||||
|
- 通过统一的回源适配层及实现支持各种不同类型存储(HDFS、各云厂商的存储服务、Maven、YUM等等)的P2P文件分发能力
|
||||||
|
- 支持更多的分发模式: 主动拉取、主动推送、实时同步、远程复制、自动预热、跨云传输等等
|
||||||
|
- 系统之间分离解耦,调度与CDN插件化,且支持按需部署,可轻可重,可内可外,灵活满足不同场景的实际需要
|
||||||
|
- 基于 grpc 全新设计的 P2P 协议框架,效率及稳定性更佳
|
||||||
|
- 支持加密传输、基于账号的传输鉴权与限流、多租户隔离机制
|
||||||
|
- 支持更高效的IO方式: 多线程IO、内存映射、DMA等
|
||||||
|
- 支持动态压缩、内存文件系统以及更高效的调度算法,提升分发效率
|
||||||
|
- 客户端通过 C/S 模式支持第三方软件原生集成蜻蜓的 P2P 能力
|
||||||
|
- 产品化能力: 支持文件上传、各种分发模式的任务管理、数据视图以及全局管控等功能
|
||||||
|
- 内外一套,核心特性相互共享,非通用特性各自扩展
|
||||||
|
- 与生态进一步集成: Harbor、Nydus(镜像按需下载解决方案)、各云厂商仓库服务等
|
||||||
|
|
||||||
|
## 架构设计
|
||||||
|
|
||||||
|
### 整体架构
|
||||||
|
![alt][arch]
|
||||||
|
|
||||||
|
### 关联关系
|
||||||
|
|
||||||
|
![alt][association]
|
||||||
|
|
||||||
|
### 镜像下载流程
|
||||||
|
|
||||||
|
![alt][download-process]
|
||||||
|
|
||||||
|
### 子系统功能
|
||||||
|
|
||||||
|
**Manager**
|
||||||
|
- 动态配置管理
|
||||||
|
- 数据大盘 & 带宽计量
|
||||||
|
- 文件上传 & 分发管理与管控
|
||||||
|
- 文件同步管理
|
||||||
|
- 账号 & 权限控制
|
||||||
|
- 订阅 & 通知
|
||||||
|
- 多租户管理
|
||||||
|
- 命令通道服务(通道合一)
|
||||||
|
|
||||||
|
**Scheduler**
|
||||||
|
- 基于多维度的 P2P 调度策略
|
||||||
|
- 智能化调度算法(高级)
|
||||||
|
- 调度结果可量化对比以及支持 A/B Testing
|
||||||
|
- 调度策略插件化以及 CDN 子系统插件化
|
||||||
|
- 元信息下发管道
|
||||||
|
- 客户端下载结果和回源结果统计以及与监控服务的对接
|
||||||
|
|
||||||
|
**CDN**
|
||||||
|
- 多源适配能力,包括目录下载和 Range 下载功能
|
||||||
|
- DMA 读写
|
||||||
|
- 回源中转
|
||||||
|
- 分发预热
|
||||||
|
- 动态压缩
|
||||||
|
- 存储管理(种子存放、磁盘清理、块级存储)
|
||||||
|
- 内存文件系统
|
||||||
|
- 安全传输(对称加密、完整性校验等)
|
||||||
|
- 存储介质插件化
|
||||||
|
|
||||||
|
**Dfget daemon**
|
||||||
|
- 多源适配能力,包括目录下载和 Range 下载功能
|
||||||
|
- 高效 IO 机制
|
||||||
|
- 多下载任务的 IO 调度(高 IO 吞吐量)
|
||||||
|
- 减少文件读写次数:改进临时文件存放方式、文件完整性校验改进
|
||||||
|
- DMA 读写
|
||||||
|
- 流式传输
|
||||||
|
- 客户端下载 Proxy 能力(http & https)
|
||||||
|
- 单服务进程启动(CS 模式)以及常驻和非常驻模式
|
||||||
|
- 失败回源处理
|
||||||
|
- 本地缓存能力(客户端 seeder 模式)
|
||||||
|
- 客户端优雅升级与部署方案
|
||||||
|
- 命令执行
|
||||||
|
|
||||||
|
**Framework**
|
||||||
|
- 高可用、高性能、易集成
|
||||||
|
- 一致性 Hash 算法选主
|
||||||
|
- 客户端连接管理
|
||||||
|
|
||||||
|
|
||||||
|
[arch]: ../images/arch.png
|
||||||
|
[association]: ../images/association.png
|
||||||
|
[download-process]: ../images/download-process.png
|
||||||
|
After Width: | Height: | Size: 153 KiB |
|
After Width: | Height: | Size: 87 KiB |
|
After Width: | Height: | Size: 136 KiB |
|
After Width: | Height: | Size: 37 KiB |
|
After Width: | Height: | Size: 5.6 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 5.5 KiB |
|
After Width: | Height: | Size: 425 KiB |