代码拉取完成,页面将自动刷新
x-downloader 是一款分布式下载器,目前支持HTTP、FTP 文件下载(其中集成了m3u8文件的下载)。
下载器存在多个分支:
biz_rpc_dev分支:基于netty的rpc分布式下载器(进行中)
nacos_mq分支:基于nacos和rabitmq的分布式下载器(已完成)
本下载器采用调度和分配策略,结合生产者消费者模型, 天然支持
动态调整下载速率(同时下载文件数)、
查看下载进度、优先级下载(mq+内部优先队列)、
断点下载、动态横向扩容(增加下载节点)
等功能。
架构说明
架构图的在线地址:https://www.processon.com/view/link/61e5236563768906b3e9a052
//例子:服务A调用服务B的register方法
//服务A
//远程服务接口
@RpcClient("ServiceB")
public interface ServiceB {
void register(BasicFrame<Object> frame);
}
class Test {
//或者通过@Autowired
@Autowired
private ServiceB serviceb;
//使用远程服务
public void test() {
serviceb.register(new BasicFrame());
}
}
//服务B
//远程目标方法
@RpcComponent("ServiceB")
public class ServiceB {
@RpcHandler("register")
public void register(BasicFrame<Object> frame) {
//打印BasicFrame数据
log.info(frame);
}
}
任务参数说明
{
timestamp: 1600000000, //时间戳
task: { //下载任务
id: 1001, //任务id
retryCount: 0, //重试次数
sourceFtpUrl: "ftp://xxx", //源FTP地址
targetFtpUrl: "ftp://ttt", //目标FTP地址
fileType: 1, //文件类型
priority: 10, //优先级
notifyUrl: "http://servername/callback/xxx", //通知地址
fileCode: "BDNxxx", //文件code
status: 1 ,//下载任务状态
startTime: 160000, //下载开始时间
finishTime: 160000, //下载完成时间
duraltion: 10000, //下载持续时常
taskServerInstanceId: "ip + port + xx" //nacos 组件唯一id
}
}
1.【downloader】下载节点异常时,缺少一个 队列剩余任务 自动再分配的处理 2.【dispatcher】下载节点异常时,缺少一个 重试任务队列 自动再分配的处理 3.【dispatcher】在不依赖xxljob的情况下,现有方案还不够完美 4.缺少一个全任务流程追踪的可视化过程
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。
1. 开源生态
2. 协作、人、软件
3. 评估模型