本申请涉及移动应用网络传输,并且更为具体地,涉及一种基于okhttp的分片传输的方法和装置。
背景技术:
1、如今手机的普及与发展,使得移动应用的占据着大部分人日常生活的很大一部分。
2、而移动应用最常见的一个使用场景是进行网络数据传输。例如,为不在身边的朋友发送一个文件,或者把想要收藏的图片视频添加到云盘中等等。这些操作的本质都是在进行数据的下载与上传。
3、在传统的网络中,进行上传与下载是单线程传输的,即每次传输同一时间只有一份数据进行收发。由于5g时代的来临,网络的带宽不断加大之下,这种单线程传输模型不能完全利用现有的网络带宽,导致传输时间和网络资源的极大浪费。
4、专利申请号为“cn202011180386.0”、发明名称为《一种分片下载方法、装置及介质》的发明专利中描述了如下技术方案:主要利用一个以上的线程固定轮询剩余分片任务下载,其分片策略主要根据剩余分片的大小容量排序后选取合适分片进行下载。
5、此专利虽然可以实现分片的下载数据,但是对于此方案来说,存在以下问题。一方面,分片策略为离线固定策略,没有加入动态下发逻辑,因此不存在针对不同传输数据设计不同的分片方案,所设计的固定策略可能无法应用于多个场景,需要不断修改代码。另一方面,该方案仅实现了下载场景,而不能支持上传场景,应用场景显然不够广泛。
6、因此,本领域中急需一种新型的传输方案。该传输方案能够结合新型的传输框架,充分利用5g网络的带宽资源,实现多个数据的并行传输。并且能够在传输完成之后依然保持数据完整性。这样不但实现的网络资源的充分利用,也极大地减少了传输时间,从而极大地提升了用户的传输体验和感受。
技术实现思路
1、以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在标识出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以作为稍后给出的更加详细的描述之序。
2、如上所述,为了为移动应用网络传输技术提供优化方案,解决传统单线程传输无法占满用户网络带宽所导致传输耗时大、传输资源利用不充分等问题,本申请采用了一种新型的网络传输技术方案。该方案不但能够解决上述耗时和资源利用不充分的问题,同时可以实现断点续传功能,从而减少重复传输数据的问题,极大地提高了传输效率。
3、okhttp是一种基于android的网络框架。它是一个处理网络请求的开源项目,是安卓端当下最火热的轻量级框架。本申请的技术方案利用该开源框架,通过把要传输的数据分成一片一片的多份数据进行同时传输,传输完成后合并数据然后校验确保完整性,已达到尽可能利用全部的网络带宽的同时来尽可能减少网络传输的时间,让用户在使用移动应用的体验得到极大的提高。同时,基于该框架的方案最大程度地减少了原有项目的改造和维护成本。
4、根据本申请的第一方面,提供了一种基于okhttp的分片传输的方法。该方法包括以下步骤:
5、基于分片任务信息来选择优先级最高的分片策略;
6、基于该分片策略来创建线程池,其中每个线程对应于一个分片传输;
7、基于该分片策略对数据进行分片划分并记录所有分片的开始和结束位置;
8、轮询是否存在尚未传输的分片;以及
9、当该数据传输完毕后,执行该分片的合并并校验其完整性。
10、根据本申请的优选实施例,基于分片任务信息来选择优先级最高的分片策略进一步包括:
11、通过策略分发服务器动态下发符合应用场景的分片配置文件,其中该配置文件包括多个分片策略;以及
12、基于传输数据信息和时间信息来从该多个分片策略中选择优先级最高的分片策略。
13、根据本申请的优选实施例,该方法进一步包括:
14、若传输暂停或意外中止,则将当前未传输片段与最大重传大小做比较;
15、如果大于最大重传大小,则该片段不作为新分片合并,
16、否则,将该片段合并到新分片并进行重传。
17、根据本申请的优选实施例,该分片策略包括:
18、策略名称、生效日期、生效时段、指定数据类型、指定数据大小、优先级、最小分片大小、最大重传大小、同时传输分片数量。
19、根据本申请的优选实施例,该分片策略由服务器下发,或来自应用侧内置的默认策略。
20、根据本申请的第二方面,提供了一种基于okhttp的分片传输的装置,该装置包括:
21、策略配置模块,用于管理和调整分片策略,并在暂停传输和意外中止情况下支持分片片段的重组和划分;
22、分片管理模块,用于管理分片任务;
23、分片合并校验模块,用于将传输后的分片合并单个文件并对校验其完整性;
24、传输速度计算模块,用于计算该分片任务的速度总和以及合并计算多个分片进度;以及
25、策略分发服务器,用于记录和存储该分片策略。
26、根据本申请的优选实施例,该策略配置模块包括:策略解析单元,用于将获取的分片策略解析为json配置文件数据以供使用;策略存储单元,用于将该json配置文件数据存储为数据库或者本地文件;策略读取单元,用于读取本地缓存的分片策略并检测其合法性;该分片管理模块包括:分片控制单元,用于对该分片任务进行线程管理;分片划分单元,用于基于该分片策略对该分片任务进行分片划分;分片记录单元,用于记录该分片任务的信息;分片合并校验模块包括:分片合并单元,用于合并最后产生的分片文件;文件校验单元,用于通过哈希散列计算来校验该分片文件。
27、根据本申请的优选实施例,该策略分发服务器根据应用场景动态下发分片配置文件,其中该配置文件包括多个分片策略,并且其中该策略配置模块进一步用于:基于传输数据信息和时间信息来从该多个分片策略中选择优先级最高的分片策略。
28、根据本申请的优选实施例,该分片策略来自应用侧内置的默认策略。
29、根据本申请的优选实施例,该分片管理模块进一步用于:基于该分片策略来创建线程池,其中每个线程对应于一个分片传输;以及基于该分片策略对数据进行分片划分并记录所有分片的开始和结束位置。
30、为能达成前述及相关目的,这一个或多个方面包括在下文中充分描述并在所附权利要求中特别指出的特征。以下描述和附图详细阐述了这一个或多个方面的某些解说性特征。但是,这些特征仅仅是指示了可采用各种方面的原理的各种方式中的若干种,并且本描述旨在涵盖所有此类方面及其等效方案。
1.一种基于okhttp的分片传输的方法,其特征在于,所述方法包括以下步骤:
2.如权利要求1所述的方法,其特征在于,基于分片任务信息来选择优先级最高的分片策略进一步包括:
3.如权利要求1所述的方法,其特征在于,所述方法进一步包括:
4.如权利要求1所述的方法,其特征在于,所述分片策略包括:
5.如权利要求1所述的方法,其特征在于,所述分片策略由服务器下发,或来自应用侧内置的默认策略。
6.一种基于okhttp的分片传输的装置,其特征在于,所述装置包括:
7.如权利要求6所述的装置,其特征在于,
8.如权利要求6所述的装置,其特征在于,所述策略分发服务器根据应用场景动态下发分片配置文件,其中所述配置文件包括多个分片策略,并且
9.如权利要求6所述的装置,其特征在于,所述分片策略来自应用侧内置的默认策略。
10.如权利要求6所述的装置,其特征在于,所述分片管理模块进一步用于: