尘语论坛 牢尘的个人论坛,随便聊聊。
登录 注册 发帖
首页/ 网站程序/ 正文

什么是 TLD 核心?

牢尘牢尘 发表于 2026-10-01 22:29 15 次浏览 0 条回复 站长
牢尘
牢尘 站长
楼主
1 天前 #1

概述😊

TLD 核心(TaiLerDownloader Core)是一个高性能、跨平台、多语言可调用的下载引擎内核,可为外部项目提供强大的下载能力支持,使开发者能够在自己的应用中轻松集成专业级的文件下载功能。

开源协议

本项目采用 https://gnu.ac.cn/licenses/agpl-3.0.html 协议开源发布。

TIP

本文档介绍的是 TLD(Rust 版本),它是 https://github.com/TaiLerDownloader/TTHighSpeedDownloader 的 Rust 重写版本。

TLD 的调用方式与 TTHSD Golang 相同,但性能更好。

注:https://github.com/TaiLerDownloader/TTHighSpeedDownloader 已停止开发,建议新项目使用 TLD。

核心概念

1. 高性能下载引擎

TLD 核心采用 Rust 语言编写,利用 Rust 的异步特性和零成本抽象实现了真正的多线程下载。它能够:

  • 自动分割大文件为多个小块并行下载
  • 智能调整线程数量以最大化带宽利用率
  • 无 GC 暂停:相比 Golang 版本,拥有更稳定的性能表现
  • 更低的内存占用:内存管理更加高效

2. 跨平台支持

TLD 核心编译为平台原生的动态链接库:

注:TLD 默认只支持 64 位系统

桌面系统(Windows, Linux, MacOS)

  • x86_64 架构使用默认名称(TaiLerDownloader.*)
  • ARM64 架构使用带后缀的名称(TaiLerDownloader_arm64.*)

Android 版本

  • TaiLerDownloader_android_x86_64.so
  • TaiLerDownloader_android_arm64.so
  • TaiLerDownloader_android_armv7.so

HarmonyOS 版本

  • TaiLerDownloader_harmony_x86_64.so
  • TaiLerDownloader_harmony_arm64.so

IOS 版本

  • TaiLerDownloader_ios_arm64_device.dylib # iOS ARM64 设备库
  • TaiLerDownloader_ios_arm64_simulator.dylib # iOS ARM64 模拟器库

这意味着您的应用程序可以在任何主流操作系统上运行,无需为不同平台重写下载逻辑。

3. 多语言调用接口

TLD 核心通过标准的 C ABI(应用程序二进制接口)暴露功能,支持:

  • Python: 通过 tld_interface.py 封装调用
  • C/C++: 通过 TaiLerDownloader.h / TaiLerDownloader.hpp 封装调用
  • C#/.NET: 通过 TaiLerDownloader.cs P/Invoke 封装调用
  • Java/Kotlin: 通过 JNA (桌面) 或 JNI (Android) 接口调用
  • TypeScript/JavaScript: 通过 Koffi FFI 封装调用(支持 Electron)
  • Rust: 通过 libloading 动态加载绑定调用
  • Go: 通过 CGo + dlopen 绑定调用
  • Godot: 通过 GDExtension 封装调用
  • 其他任何支持调用 C 函数的语言

4. 零性能损失的 Python 封装

TLD 提供了官方接口封装(例如 tld_interface.py),其特点包括:

  • 直接 C 调用: 直接调用底层 C 函数,无中间层性能损失
  • 类型安全: 完整的类型注解和错误处理
  • 异步回调: 下载进度通过回调函数异步通知,不阻塞主线程
  • 内存安全: 自动管理 C 内存,避免内存泄漏

TLD vs TTHSD Golang

TLD (Rust 版本)TTHSD Golang (已停止开发)
更高的下载速度:优化的异步 I/O 模型调用方式与 TLD 相同
更低的内存占用:精细的内存管理,无 GC 开销已停止维护和更新
更高的并发数:可支持数十万并发连接不再接收新功能和 Bug 修复
更安全的内存管理:Rust 的所有权机制确保内存安全建议新项目迁移到 TLD
新增 Android / HarmonyOS 支持:提供完整的 JNI 接口 / 鸿蒙接口
更稳定的性能:无 GC 暂停,性能可预测

为什么要使用 TLD 核心?

1. 专注于业务逻辑,而非下载实现

作为开发者,您可能面临以下挑战:

  • 需要实现文件下载功能,但不想从头编写复杂的下载逻辑
  • 担心自己实现的下载器性能不佳、不稳定
  • 需要支持多平台,但不想为每个平台维护不同的代码
  • 希望提供良好的用户体验(进度显示、暂停/恢复、错误处理等)

TLD 核心解决了所有这些痛点,让您能够:

python
# 只需几行代码即可集成专业级下载功能
from tld_interface import TLDownloader
downloader = TLDownloader()
downloader.start_download(
    urls=["https://example.com/file.zip"],
    save_paths=["./downloads/file.zip"],
    callback=progress_callback
)

2. 性能优势

  • 原生性能: Rust 语言编译的二进制代码,执行效率高
  • 真正的并发: 利用 Rust 的 async/await 和 tokio 运行时实现真正的并行下载
  • 智能分块: 根据文件大小和网络状况自动优化分块策略
  • 零拷贝传输: 内存缓冲区直接传输,减少数据复制开销
  • 无 GC 暂停: 相比 Golang 版本,性能更加稳定可预测

3. 稳定性和可靠性

  • 经过测试: 核心代码经过严格测试,处理各种网络异常
  • 错误恢复: 自动重试失败的分块,确保下载完成
  • 资源管理: 自动管理连接池和内存,避免资源泄漏
  • 线程安全: API 设计为线程安全,支持并发调用
  • 内存安全: Rust 的所有权机制确保内存安全,避免常见的内存错误

4. 开发效率

  • 快速集成: 只需引入一个动态库和一个接口封装文件(库)
  • 完善文档: 详细的 API 文档和示例代码
  • 活跃维护: 持续更新和改进,修复问题及时
  • 社区支持: 开源项目,有问题可以查看源码或提交 issue

支持的下载协议

TLD 内置了协议路由工厂,根据 URL 前缀自动选择最优的下载器,原生支持 7 种下载协议:

协议源码模块说明
HTTP / HTTPShttp_downloader.rs动态分片 + TLS 指纹伪装,最大 64 并发连接
HTTP/3 (QUIC)http3_downloader.rs自动探测 Alt-Svc: h3,无缝 QUIC 加速
FTP / FTPSftp_downloader.rs匿名/密码登录,二进制传输
SFTP (SSH)sftp_downloader.rs基于 SSH 隧道,密码/密钥认证
BitTorrent / Magnettorrent_downloader.rs完整 DHT + PEX,种子与磁力链接
ED2K (eMule)ed2k_downloader.rsHTTP 网关代理下载,无需电驴客户端
Metalink 4.0metalink_downloader.rsXML 镜像元数据解析,自动选最优镜像

TIP

详细的协议说明和 URL 格式请参阅 https://docss.sxxyrry.qzz.io/TLD/zh/guide/supported-protocols.html 。

技术架构

代码
您的应用程序 (Python/C++/C#/Java)
        ↓
  ( TLD 的 接口封装 )
        ↓
  C ABI 接口 (标准调用约定)
        ↓
  TLD 核心引擎 (Rust 编译的动态链接库)
        ↓
  多线程下载管理器 / 网络层 / 文件 IO 层

核心组件

  • 下载任务调度器: 管理多个下载任务,分配线程资源
  • HTTP 客户端: 处理 HTTP/HTTPS 协议,支持 Range 请求
  • 分块管理器: 将大文件分割为小块并行下载
  • 进度监控器: 实时跟踪下载进度和速度
  • 事件系统: 通过回调函数通知下载状态变化
  • 错误处理器: 处理网络异常、文件错误等

使用的 Rust 库

  • tokio: 异步运行时,提供高效的异步 I/O
  • rquest: HTTP 客户端,支持 TLS 指纹模拟
  • quinn / h3: HTTP/3 (QUIC) 协议支持
  • suppaftp: FTP 协议支持
  • russh / russh-sftp: SFTP 协议支持
  • librqbit: BitTorrent 协议支持
  • metalink: Metalink 4.0 解析
  • tokio-tungstenite: WebSocket 客户端
  • serde / serde_json: 序列化/反序列化
  • async-trait: 异步 trait 支持
  • jni: Android JNI 支持(可选)

适用场景

1. 桌面应用程序

  • 软件更新器
  • 资源下载器
  • 媒体文件下载工具

2. 后端服务

  • 批量文件处理
  • 数据同步服务
  • 内容分发网络

3. 游戏开发

  • 游戏资源下载
  • 补丁更新
  • DLC 内容下载

4. 移动应用

  • 通过 JNI 接口在 Android 应用中调用
  • 通过接口在 HarmonyOS 应用中调用
  • 后台下载任务

开始使用

基本要求

  • 目标平台: Windows/Linux/macOS/Android/HarmonyOS/IOS
  • Python 3.11+ (如果使用 Python 接口)
  • 动态链接库文件

快速集成

  1. 下载对应平台的动态链接库
  2. 将库文件放入项目目录
  3. ( Python ) 复制 tld_interface.py 到项目
  4. 按照文档调用 API

示例工作流

python
# 1. 初始化
from tld_interface import TLDownloader
downloader = TLDownloader()

# 2. 定义进度回调
def progress_callback(event, msg):
    if event['Type'] == 'update':
        print(f"进度: {msg['Downloaded']}/{msg['Total']}")

# 3. 开始下载
downloader.start_download(
    urls=["https://example.com/large-file.iso"],
    save_paths=["./downloads/file.iso"],
    thread_count=32,
    callback=progress_callback
)

总结

TLD 核心是一个专业级的下载解决方案,它提供了:

功能描述
高性能真正的多线程下载,最大化带宽利用率
跨平台一次集成,全平台运行(含 Android, HarmonyOS)
多语言支持几乎所有主流编程语言
易用性简单的 API,快速集成
稳定性经过测试,处理各种异常情况
开源透明可控,可根据需要修改

无论您是在开发桌面应用、后端服务还是移动应用,TLD 核心都能为您提供可靠、高效的下载功能,让您专注于核心业务逻辑的开发。

我要回复

登录后才能回复 去登录