Dragonfly 最新正式版本 v2.0.9 已经发布!

简介: Dragonfly 最新正式版本 v2.0.9 已经发布!

作者:戚文博-蚂蚁集团


Dragonfly 最新正式版本 v2.0.9 已经发布!感谢 Dragonfly 的贡献者们,同时也感谢默默支持 Dragonfly 项目的各个公有云团队。欢迎访问 d7y.io[1]网站来了解详情,下面具体介绍 v2.0.9 版本带来了那些更新。

image.png

功能


  • 下载任务可以根据优先级(Priority)进行下载。优先级可以在下载任务时 cli 中作为参数传入,也可以在 Manager Console 设置对应应用关联的优先级。具体不同优先级的功能可以参考文档 priority protoc definition[2]
  • Scheduler 配置新增 PieceDownloadTimeout 字段,做用是当某个 Piece 下载超过 Timeout 时,设置对应的 Task 状态变更为失败。防止异常 Task 元信息残留在 Scheduler 中。
  • GRPC 服务新增 Health Service 和 Reflection 服务。
  • Manager 支持 Redis 哨兵模式(sentinal model)。
  • 重构 Dynconfig 模块移除 json.Unmarshal 操作,提高 Dynconfig 模块运行时效率。并且支持通过健康检查的方式过滤异常地址服务。
  • 修复当无可用服务时,GRPC 未构建哈希环所造成的异常。
  • 早期版本当同一个 Task 的多个 Piece 并发下载时,Scheduler 会调度多个 Parent 给当前 Peer 进行下载,但多个 Piece 基本都会从单个 Parent 进行下载。当前版本更改多个 Piece 可以从不同的 Parent 并发下载,可以防止流量集中在部分热点 Parent,提高下载效率同时也提高了带宽平均利用率。
  • Peer 调用 Manager 获取匹配的 Scheduler Cluster 的时候,如果没有匹配到任何 Scheduler Cluster,那么 Manager 会返回所有的 Scheduler Cluster 提供给 Peer。Peer 会使用 Health Check 通过的 Scheduler Cluster 地址供后续下载调度使用。
  • 支持 ORAS[3]客户端的回源下载协议,扩展容器镜像生态支持。
  • 增加 UDP Ping 包的支持和虚拟网络拓扑的 GRPC Protoc 定义。未来会新增基于网络探测构建虚拟网络拓扑结构,提高调度算法的精确度。
  • 完成 V2 版本的 P2P 协议[4]的定义。Scheduler 和 Manager 对应实现了 V2 版本的 P2P 协议的功能。未来会基于 V2 版本的 P2P 协议和 Rust 语言重写 Dfdaemon,提高客户端性能的同时能够依赖更加标准且扩展性更强的 V2 版本的 P2P 协议。
  • OSS 客户端回源协议新增基于 STS 临时访问凭证来访问 OSS 源站。
  • Scheduler 新增 hostTTL and hostGCInterval 配置,主要作用于 Host 元数据的释放。可以保证在 Peer 主机异常退出的情况下,仍然可以释放掉异常的 Host 元数据,防止脏数据残留。
  • Manager 的 Searcher 模块新增根据 CIDR[5]条件去筛选当前 Peer 匹配的 Scheduler Cluster,提供更精确的匹配计算方式。
  • 重构 V1 版本 P2P 协议的 Metric,并且新增 V2 版本 P2P 协议的 Metric,并且根据新的 Metrics 更新 Helm Charts[6]的 PrometheusRule 对应的告警规则。并且重新整理 Dragonfly Grafana Dashboards[7]方便用户可以一键导入 Dashboards 观测 P2P 网络流量以及服务相关数据。具体文档可以参考 Monitoring[8], Grafana Dashboard 维护在项目 dragonflyoss/monitoring[9]中。


版本更新包含的更多细节可以参考 CHANGELOG[10]


破坏性变更


老版本 Manager 由于使用了默认的 JWT Key 生成 JWT Token 会引起安全性问题,具体可以参考 security issues[11]。所以 Manager 服务配置文件新增了 JWT 配置[12]。所以当老版本 Manager 升级过程中需要在新版本 Manager 的配置文件中新增 JWT Key 配置,并且 JWT Key 是需要用户自己生成,具体 JWT Key 如何配置可以参考 setting it in the Manager configuration[13]


公有云厂商支持


  • Alibaba Cloud(阿里云) - 阿里云提供安装 Dragonfly 1.x 在容器镜像仓库 Container Registry[14],使用文档可以参考 Use P2P Acceleration in ASK[15]推荐使用更加高效且稳定的 Dragonfly 2.0[16],部署文档参考 Setup Dragonfly in Kubernetes[17]
  • Google Cloud Platform(GCP) - GCP 提供一键点击部署 Dragonfly 在 Google Kubernetes Engine(GKE)[18]Marketplace[19],具体文档可以参考 Click to Deploy Dragonfly[20]
  • Volcano Engine(火山引擎) - 火山引擎在容器服务(VKE) and 和镜像仓库(CR)中集成了 CNCF 孵化项目 Dragonfly,欢迎访问 VKE[21] & CR[22]了解更多。
  • Baidu AI Cloud(百度智能云) - 百度智能云提供在 Cloud Container Engine(CCE)[23]一键部署 P2P 加速服务,其能力来自于 Dragonfly。


参考链接


  • Dragonfly 官网

https://d7y.io/

  • Dragonfly 仓库

https://github.com/dragonflyoss/Dragonfly2

  • Dragonfly Charts 仓库

https://github.com/dragonflyoss/helm-charts

  • Dragonfly Monitor 仓库

https://github.com/dragonflyoss/monitoring

  • 阿里云容器仓库

https://www.alibabacloud.com/product/container-registry

  • 阿里云容器服务(ACK)

https://www.alibabacloud.com/product/kubernetes

  • Google Kubernetes Engine(GKE)

https://cloud.google.com/kubernetes-engine

  • Google Cloud Platform(GCP) Dragonfly Marketplace

https://console.cloud.google.com/marketplace/product/google/dragonfly

  • 火山引擎容器服务(VKE)

https://www.volcengine.com/product/vke

  • 火山引擎容器仓库(CR)

https://www.volcengine.com/product/cr

  • 百度智能云容器服务(CCE)

https://intl.cloud.baidu.com/product/cce.html


相关链接:

[1] Dragonfly 官网

https://d7y.io/ 

[2] priority protoc definition

https://github.com/dragonflyoss/api/blob/main/pkg/apis/common/v2/common.proto#L74

[3] ORAS

https://github.com/oras-project/oras

[4] V2 版本的 P2P 协议

https://github.com/dragonflyoss/api/tree/main/proto

[5] CIDR

https://en.wikipedia.org/wiki/Classless_Inter-Domain_Routing

[6] Helm Charts

https://github.com/dragonflyoss/helm-charts

[7] Dragonfly Grafana Dashboards

https://grafana.com/grafana/dashboards/?search=dragonfly

[8] Monitoring

https://d7y.io/docs/concepts/observability/monitoring

[9] Dragonfly Monitor

https://github.com/dragonflyoss/monitoring

[10] CHANGELOG

https://github.com/dragonflyoss/Dragonfly2/blob/main/CHANGELOG.md

[11] security issues

https://github.com/dragonflyoss/Dragonfly2/security/advisories/GHSA-hpc8-7wpm-889w

[12] JWT 配置

https://github.com/dragonflyoss/Dragonfly2/pull/2161

[13] setting it in the Manager configuration

https://github.com/dragonflyoss/d7y.io/blob/main/docs/reference/configuration/manager.md?plain=1#L56 

[14] 阿里云镜像仓库

https://www.alibabacloud.com/product/container-registry

[15] Use P2P Acceleration in ASK

https://www.alibabacloud.com/help/en/container-registry/latest/use-the-p2p-acceleration-feature-in-ask-and-ack-clusters

[16] Dragonfly 仓库

https://github.com/dragonflyoss/Dragonfly2

[17] Setup Dragonfly in Kubernetes

https://d7y.io/docs/getting-started/quick-start/kubernetes/

[18] Google Kubernetes Engine(GKE)

https://cloud.google.com/kubernetes-engine

[19] Google Cloud Platform(GCP) Marketplace

https://console.cloud.google.com/marketplace/product/google/dragonfly

[20] Google Cloud Platform(GCP) Dragonfly Marketplacehttps://console.cloud.google.com/marketplace/product/google/dragonfly

[21] 火山引擎容器服务(VKE)

https://www.volcengine.com/product/vke

[22] 火山引擎镜像仓库(CR)

https://www.volcengine.com/product/cr

[23] 百度智能云容器服务(CCE)

https://intl.cloud.baidu.com/product/cce.html

相关实践学习
通过ACR快速部署网站应用
本次实验任务是在云上基于ECS部署Docker环境,制作网站镜像并上传至ACR镜像仓库,通过容器镜像运行网站应用,网站运行在Docker容器中、网站业务数据存储在Mariadb数据库中、网站文件数据存储在服务器ECS云盘中,通过公网地址进行访问。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
虚拟化 芯片 iOS开发
M1/M2芯片Parallels Desktop 18安装使用教程
M1/M2芯片Parallels Desktop 18安装使用教程
1536 0
|
监控 物联网 数据安全/隐私保护
蓝牙调试工具集合汇总
蓝牙调试工具集合汇总
1116 0
|
运维 Kubernetes 安全
云原生安全 — seccomp应用最佳实践
近期针对Linux内核的CVE漏洞频出,CVE-2022-0185、CVE-2022-0185、CVE-2022-0847是威胁评分较高且热度较高的几个典型漏洞,相关的POC/EXP利用代码也已经在互联网上公开披露。对于容器场景来说,攻击者的攻击路径也比较相似,都是利用unshare等高危系统调用在新的usernamespace拿到CAP_SYS_ADMIN等高权限capabilities后利用漏
3404 0
云原生安全 — seccomp应用最佳实践
|
JSON 前端开发 Java
如何封装接口返回结构?
本文详细探讨了API接口返回结构统一化的必要性及其带来的优势,如降低开发的心智负担、减少前端开发难度和提高代码可维护性等。同时也分析了其潜在的缺点,例如灵活性降低和开发成本增加等问题。文章进一步讨论了在Spring Boot中实现统一接口返回结构的具体方法和技术细节,包括如何处理HTTP状态码、返回单个字符串的情况以及如何封装无返回值的接口等。此外,还介绍了如何利用Spring Boot的`ResponseBodyAdvice`和`@RestControllerAdvice`等特性来自动包装控制器方法的返回值及异常处理,以达到更加一致和标准化的接口响应结构。
385 3
如何封装接口返回结构?
|
数据采集 监控 数据挖掘
京东、淘宝、义乌购等电商平台的Api数据分析
京东、淘宝、义乌购等电商平台的数据分析涵盖数据收集、预处理、分析及应用优化。数据来源包括数据库、日志文件和网络爬虫,通过SQL查询、日志解析和爬虫抓取获取数据。预处理阶段进行数据清洗、缺失值处理和异常值检测。分析方法包括描述性分析、对比分析、漏斗分析等,关注成交金额、转化率等关键指标。最终基于分析结果制定策略并评估效果,持续优化平台运营。
|
消息中间件 存储 Java
MQ线上消息乱序问题处理及场景详解
【11月更文挑战第22天】在现代分布式系统中,消息队列(MQ)作为核心组件,承担着异步处理、削峰填谷和系统解耦的重任。
867 1
|
JSON API 网络架构
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?
gRPC, 由 Google 推出的开源远程过程调用(RPC)框架, 使两个应用程序间的方法调用变得简单,支持结构化数据的交换。通过采用 Protocol Buffers (Protobuf) ——一种与语言无关的接口定义语言,gRPC 体现了许多现代网络通信技术的优势
gRPC 与 REST 的比较分析:哪种 API 适合您的开发需求?
|
JavaScript 前端开发
react字符串转为dom标签,类似于Vue中的v-html
本文介绍了在React中将字符串转换为DOM标签的方法,类似于Vue中的`v-html`指令,通过使用`dangerouslySetInnerHTML`属性实现。
497 0
react字符串转为dom标签,类似于Vue中的v-html
|
Dragonfly Kubernetes 调度
P2P镜像分发:Harbor+Dragonfly优化k8s集群镜像拉取速度(二)
本篇文章则分享在大规模的kubernetes集群中,通过Harbor与Dragonfly来优化镜像的拉取速度。
2695 0