网站那个做的比较好,高唐网站制作,网站开发实施计划,企业所得税分3个档次1.首先实现断点续传功能。 断点续传实现思路#xff1a; 前端对文件分块。前端使用多线程一块一块上传#xff0c;上传前给服务端发一个消息校验该分块是否上传#xff0c;如果已上传则不再上传。如果从该断点处断网了#xff0c;下次上传时#xff0c;前面的分块已经存在…
1.首先实现断点续传功能。 断点续传实现思路 前端对文件分块。前端使用多线程一块一块上传上传前给服务端发一个消息校验该分块是否上传如果已上传则不再上传。如果从该断点处断网了下次上传时前面的分块已经存在了就不会重复上传会在断点处重新上传。从而实现断点续传。等所有分块上传完毕服务端合并所有分块校验文件的完整性。 因为分块全部上传到了服务器服务器将所有分块按顺序进行合并就是写每个分块文件内容按顺序依次写入一个文件中。使用字节流去读写文件。前端给服务传了一个md5值 (前端根据用户上传文件计算出来的md5值) 服务端合并文件后计算合并后文件的md5是否和前端传的一样如果一样则说文件完整服务端可以删除分块的文件只保留合并成功的文件。如果不一样说明可能由于网络丢包导致文件不完整这时上传失败需要重新上传。 2.当视频成功上传到分布式文件系统中 (如Minio、oss)将视频信息保存到数据库的任务表中表中每一条数据都是一个视频转码任务的处理情况 (包括视频转码状态完成/未完成)
3.任务调度中心 (如XXL-JOB)按照任务调度策 (注这里为了最大化的让多个执行器并行执行任务采用分片广播的路由策略) 开始调度任务每个执行器会收到两个值一个代表一共有多少个执行器一个代表自己是几号执行器。
4.每个执行器收到了两个参数以后就知道了一共多少个执行器及自己是几号执行器。就可以去数据库的任务表中根据任务id%执行器数量 取余结果找到取余结果等于自己序号的任务。这样可以实现所有任务均分给每个执行器 这里假设有三个执行器我要查询执行器1应该执行的任务未处理和处理失败次数小于3次的任务都可以被作为本次执行器1应该处理的任务一次最多处理10个任务 5.执行器执行的任务确保都是未进行转码的视频 (通过判断status字段是否为1比如说1表示待处理)确保幂等性 (某个视频任务被重复调度后不会导致某个视频被重复转码)如果该视频任务是未处理的执行器就处理该任务。
6.视频转码的逻辑大概就是由于数据库中任务表里已经存储了该视频在Minio中的信息就可以从Minio中把该视频下载下来。再使用视频转码工具如FFmpeg对视频进行转码。处理完成以后把转码视频上传回Minio中。
7.最后把对应视频任务的处理结果修改为已完成并将该记录插入到一个历史处理表中当前任务表中该记录可以删除。保证任务表中的记录数尽可能的少因为每个执行器都是从该表中查询自己要执行的任务。