点对点网络调度方法和***
本申请申明2021年02月05日递交的申请号为202110164661.8、名称为“点对点网络调度方法和***”的中国专利申请的优先权,该中国专利申请的整体内容以参考的方式结合在本申请中。
技术领域
本申请实施例涉及数据传输领域,尤其涉及一种点对点网络调度方法、***、设备及计算机可读存储介质。
背景技术
直播流媒体P2P分发***是由Tracker服务、CDN服务器和客户端三个部分组成。在这个***中,客户端根据Tracker服务器的指令下载不同的分片,并互相交换数据以获取完整内容。Tracker服务器可以知道负责哪个分片的客户端多、哪个分片的客户端少,且当某个分片负责的客户端数量不足的时候,还可以补充一些客户端负责该分片;同时告知各个客户端目前负责的分片情况。
但是,申请人发现Tracker服务器的计算量大、消耗资源多。另外,Tracker服务器无法获知两个客户端之间的连接状态和连接后的网络状态,从而可能导致以下情况:(1)如果有的分片是由上行速度较慢的客户端负责的话,就可能导致大部分客户端需要从CDN服务器中下载这个分片才能获取完整数据,导致流量节省的效果变差;(2)由于未能获知两个客户端之间是否可以成功建立连接,可能导致调度失效,流量节省的效果变差;(3)还可能因为网络互连的问题,导致以下情况:客户端A和客户端B户之间传输数据很快,客户端B和客户端C之间传输数据也很快,但是客户端A和客户端C之间传输数据很慢,从而导致数据传输效率低。因此,如何降低Tracker服务器计算量,并提高P2P网络的数据传输效率,成为了当前亟需解决的技术问题。
发明内容
本申请实施例的目的是提供一种点对点网络调度方法、***、计算机设备及计算机可读存储介质,用于Tracker服务器计算量大、资源消耗较多以及P2P网络的数据传输效率低的技术问题。
本申请实施例的一个方面提供了一种点对点网络调度方法,包括:获取片段文件列表,所述片段文件列表包括多个片段文件,每个片段文件包括一个或多个分片,每个分片对应一个分片号;根据所述片段文件列表与一个或多个目标分片号,从CDN服务器下载所述一个或多个目标分片号对应的一个或多个目标分片;其中,所述一个或多个目标分片号位于目标分片列表中;根据向其他客户端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表;及从所述CDN服务器中下载所述调整后的目标分片列表中的一个或多个目标分片号对应的一个或多个目标分片。
示例性的,所述根据向其他终端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表,包括:获取每个分片的第一数据、每个分片的第二数据、每个分片的字节数,所述第一数据为每个分片从其他客户端获取的字节数,所述第二数据为每个分片向所述其他客户端发送的字节数;根据所述第一数据和所述每个分片的字节数计算所述每个分片的第一比值;根据所述第二数据和所述每个分片的字节数计算所述每个分片的第二比值;及根据所述第一比值和/或所述第二比值调整所述目标分片列表,得到调整后的目标分片列表。
示例性的,根据所述第一比值和/或所述第二比值调整所述目标分片列表,得到调整后的目标分片列表,包括:若一个分片的第一比值小于第一预设比值,且所述分片的分片号 不是所述目标分片列表中的任何一个目标分片号,则将所述分片的分片号添加到所述目标分片列表中。
示例性的,根据所述第一比值和/或所述第二比值调整所述目标分片列表,得到调整后的目标分片列表,包括:若一个分片的第二比值小于第二预设比值,且所述分片的分片号为所述目标分片列表中的其中一个目标分片号,则将所述分片对应的目标分片号从所述目标分片列表中移除。
示例性的,所述方法还包括:获取所述目标片段文件中的各个分片的第一下载进度;向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度;根据所述第一下载进度与所述第二下载进度,从所述其他客户端下载所述目标片段文件中缺少的分片并更新所述第一下载进度;及当播放器请求所述目标片段文件时,停止从所述其他客户端下载所述目标片段文件中缺少的分片,并从所述CDN服务器下载所述目标片段文件中缺少的分片,并更新所述第一下载进度。
示例性的,所述方法还包括:当所述目标片段文件完整时,通过所述播放器播放所述目标片段文件。
示例性的,向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度,包括:通过请求参数向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度,所述请求参数包括所述目标片段文件的文件名;及从所述其他客户端接收响应数据,所述响应数据包括所述目标片段文件的每个分片的第二下载进度。
示例性的,所述方法还包括:若所述目标片段文件的每一个分片的第二下载进度均不大于所述第一下载进度,则重新向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度。
本申请实施例的一个方面又提供了一种点对点网络调度***,包括:列表获取模块,用于获取片段文件列表,所述片段文件列表包括多个片段文件,每个片段文件包括一个或多个分片,每个分片对应一个分片号;第一下载模块,用于根据所述片段文件列表与一个或多个目标分片号,从CDN服务器下载所述一个或多个目标分片号对应的一个或多个目标分片;其中,所述一个或多个目标分片号位于目标分片列表中;分片调整模块,用于根据向其他客户端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表;及第二下载模块,用于从所述CDN服务器中下载所述调整后的目标分片列表中的一个或多个目标分片号对应的一个或多个目标分片。
本申请实施例的一个方面又提供了一种计算机设备,所述计算机设备包括存储器、处理器以及存储在存储器上并可在处理器上运行的计算机可读指令,所述计算机可读指令被处理器执行时实现以下步骤:获取片段文件列表,所述片段文件列表包括多个片段文件,每个片段文件包括一个或多个分片,每个分片对应一个分片号;根据所述片段文件列表与一个或多个目标分片号,从CDN服务器下载所述一个或多个目标分片号对应的一个或多个目标分片;其中,所述一个或多个目标分片号位于目标分片列表中;根据向其他客户端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表;及从所述CDN服务器中下载所述调整后的目标分片列表中的一个或多个目标分片号对应的一个或多个目标分片。
本申请实施例的一个方面又提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机可读指令,所述计算机可读指令可被至少一个处理器所执行,以使所述至少一个处理器执行如下步骤:获取片段文件列表,所述片段文件列表包括多个片段文件,每个片段文件包括一个或多个分片,每个分片对应一个分片号;根据所述片段文件列表与一个或多个目标分片号,从CDN服务器下载所述一个或多个目标分片号对应的一个或多个目标分片;其中,所述一个或多个目标分片号位于目标分片列表中;根据向其他客户端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表;及从所述CDN服务器中下载所述调整后的目标分片列表中的一个或多个目标分片号对应的一个或 多个目标分片。
本申请实施例提供的点对点网络调度方法、***、设备及计算机可读存储介质,可以在各个客户端的连接成功率和传输速率不可控的前提下,根据P2P网络的数据获取能力自动调整自身的分片下载策略,从而可以适应连接成功率和传输速率的变化,因此提高P2P网络的数据传输效率。而且,上述过程不需要Tracker服务器的指示,有效减少Tracker服务器计算量和资源消耗。
附图说明
图1示意性示出了根据本申请实施例的环境应用示意图;
图2示意性示出了根据本申请实施例一的点对点网络调度方法的流程图;
图3示意性示出了本申请实施例一中的文件列表图;
图4示意性示出了根据本申请实施例一的另一种点对点网络调度方法的流程图;
图5示意性示出了图4中步骤S402的具体流程图;
图6示意性示出了根据本申请实施例一的另一种点对点网络调度方法具体流程图;
图7示意性示出了本申请实施例二的用户偏好设置配置***中的服务器和客户端之间交互流程图;以及
图8示意性示出了根据本申请实施例三的用户偏好设置配置***的服务器的执行步骤流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
以下为本申请的术语解释:
点对点网络:(peer-to-peer,简称P2P网络),又称对等式网络,是无中心服务器、依靠用户群(peers)交换信息的互联网体系。
CDN(Content Delivery Network,内容分发网络)服务器:是构建在网络基础之上的智能虚拟网络,依靠部署在各地的边缘服务器,通过中心平台的负载均衡、内容分发、调度等功能模块。
Tracker服务器,运行有应用程序Tracker的服务器。Tracker能够追踪有多少用户同时在下载同一个文件,并告知与之通信的客户端。
图1示意性示出了根据本申请的点对点网络调度方法的环境示意图。在示例性的实施例中,提供商网络20可以通过网络30连接目标客户端40以及多个其他客户端50。Tracker服务器60可以通过网络70连接目标客户端40,Tracker服务器60还可以通过一个或多个网络70连接多个其他客户端50。
在示例性的实施例中,提供商网络20可以包括多个CDN服务器80。每个CDN服务器80可以被配置为提供各种服务,例如,存储源站服务器90提供的内容,并将这些内容分发给目标客户端40和多个其他客户端50。其中,源站服务器90可以实现为提供商网络20的一部分。在其他实施例中,源站服务器90可以由提供商网络20的服务提供商之外的 单独服务提供商管理。
源站服务器90用于对原始数据(如直播数据)进行分段操作,并对分段操作得到分段文件进行分片操作,以得到各个分段文件对应的分片;源站服务器90还用于根据所述分段文件和各个分段文件对应的分片建立片段文件列表。源站服务器90还用于通过CDN服务器80为所述多个客户端提供片段文件列表和各个分段文件对应的分片。源站服务器90可以包括内容流服务,例如因特网协议视频流服务。内容流服务可以被配置为经由各种传输技术来分发内容。源站服务器90可以被配置为提供内容,诸如主播终端提供的视频,音频,文本数据,其组合和/或类似物。内容可以包括内容流(例如,视频流,音频流,信息流),内容文件(例如,视频文件,音频文件,文本文件)和/或其他数据。
Tracker服务器60可以用于为各个客户端分配用户ID和提供在线用户列表,Tracker服务器60还可以用于帮助各个客户端建立连接,以构建点对点网络。具体的,在各个客户端连上Tracker服务器60后,Tracker服务器60会生成一个代表该客户端的唯一ID分配给客户端,并把这个唯一ID加入到在线用户列表中;当客户端请求在线用户列表的时候,Tracker服务器60会返回一个目前与Tracker服务器60处于连接状态的客户端的唯一ID的列表;当客户端要建立连接的时候,Tracker服务器60会在两个客户端之间转发握手数据,两个客户端拿到对方握手数据之后,开始建立连接。
目标客户端40和多个其他客户端50均可与所述Tracker服务器60连接,以通过Tracker服务器60构建点对点网络。目标客户端40和其他客户端50获取所述CDN服务器80提供的片段文件列表和各个分段文件对应的分片。目标客户端40和其他客户端50可以向点对点网络中获取各个分段文件对应的分片。所述目标客户端40和其他客户端50可以是智能手机、平板电脑等电子设备。
网络30或网络70包括各种网络设备,例如路由器,交换机,多路复用器,集线器,调制解调器,网桥,中继器,防火墙,代理设备和/或类似。网络30可以包括物理链路,例如同轴电缆链路,双绞线电缆链路,光纤链路,其组合等。网络30可以包括无线链路,诸如蜂窝链路,卫星链路,Wi-Fi链路等。
实施例一
图2示意性示出了根据本申请实施例一的点对点网络调度方法的流程图。本实施例可以被执行在目标客户端40中。可以理解,本方法实施例中的流程图不用于对执行步骤的顺序进行限定。
如图2所示,该点对点网络调度方法可以包括步骤S200~S212,其中:
步骤S200,获取片段文件列表,所述片段文件列表包括多个片段文件,每个片段文件包括一个或多个分片,每个分片对应一个分片号。
目标客户端40可以从CDN服务器80中获取所述片段文件列表。示例性的,目标客户端40和CDN服务器80建立通信连接之后,目标客户端40可以向CDN服务器80发送所述片段文件列表的获取请求。CDN服务器80在接收到所述获取请求后,CDN服务器80可以响应所述获取请求,并返回所述片段文件列表给目标客户端40。
所述片段文件列表中的片段文件可以是源站服务器90提供的,其中,所述片段文件可以是源站服务器90通过对获取到的直播数据进行分段处理后得到的文件。例如,在获取到所述直播数据之后,源站服务器90可以根据预定时长对将所述直播数据进行分段处理,以得到所述多个片段文件。当所述预定时长为1秒时,则源站服务器90可以每获取到1秒时长的直播数据,生成一个时长为1秒的片段文件。
当得到所述片段文件列表后,目标客户端40可以将所述片段文件列表中每个片段文件拆分成分片,并为每个分片分配对应的分片号。例如,目标客户端40可以将每个片段文件拆分成4个分片,这4个分片的分片号可以为:01、02、03、04。
为了方便理解,如图3所示,本实施例提供了一个文件列表图,该文件列表图中的文 件列表包括片段文件0003(大小为:430K)、片段文件0004(大小为:400K)和片段文件0005(大小为:420K)。目标客户端40可以先将每个片段文件拆分为若干个大小40K的数据小块,然后将这若干个数据小块分成四份,以得到所述每个片段文件的4个分片。以片段文件0003为例,片段文件0003可以被拆分成10个数据小块。这个10个数据小块分为4个分片,其中:第1个分片包括数据小块0和数据小块1,第2个分片包括数据小块2、数据小块3和数据小块4,第3个分片包括数据小块5和数据小块6,第4个分片包括数据小块7、数据小块8、数据小块9和数据小块10。
步骤S202,根据所述片段文件列表与一个或多个目标分片号,从CDN服务器下载所述一个或多个目标分片号对应的一个或多个目标分片;其中,所述一个或多个目标分片号位于目标分片列表中。
与CDN服务器80建立连接之后,目标客户端40可以根据所述片段文件列表中的一个或多个目标分片号,从CDN服务器80请求下载所述一个或多个目标分片号对应的一个或多个目标分片。需要说明的是,所述目标分片号可以为:目标客户端40第一次向CDN服务器80请求下载的分片对应的分片号。例如,当目标客户端40第一次向CDN服务器80请求下载分片时,目标客户端40从所述片段文件列表中随机选取的一个或多个分片号。目标客户端40还可以根据所述一个或多个分片号生成所述目标分片列表,所述目标分片列表中的分片号称之为目标分片号。
示例性的,当目标客户端40确定所述一个或多个目标分片号后,目标客户端40还可以从所述其他客户端50中获取目标片段文件中除了所述一个或多个目标分片外的一个或多个其他分片。需要说明的是,所述目标片段文件包括一个或多个分片,所述目标分片为目标片段文件中的分片。例如,所述目标片段文件0006包括4个分片,若第1个分片为目标分片,那么,第2个分片、第3个分片以及第4个分片为其他分片。
步骤S204,根据向其他客户端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表。
在示例性的,所述步骤S204可以进一步的包括步骤S204a~步骤S204d,其中:
步骤S204A,获取每个分片的第一数据、每个分片的第二数据、每个分片的字节数,所述第一数据为每个分片从所述其他客户端获取的字节数,所述第二数据为每个分片向所述其他客户端发送的字节数。
本实施例所述的点对点网络调度方法的目的在于减少CDN服务器80的承载数据量,从而降低所述CDN服务器80的数据分发压力。为了尽可能的减少所述CDN服务器80的承载数据量,本实施例还可以对所述目标分片号进行调整,以减少目标客户端40从CDN服务器80下载分片的数据量。具体来说,目标客户端40在获取所述目标片段文件中的各个分片的同时,还可以对以下三个数据进行统计:
1、第一数据L:每个分片从所述其他客户端50获取的字节数;
2、第二数据M:每个分片向所述其他客户端50发送的字节数;
3、每个分片字节数N。
目标客户端40可以根据以上三个数据计算得到每个分片的两个比值,具体如步骤S206和步骤S208。
步骤S204B,根据所述第一数据和所述每个分片的字节数计算所述每个分片的第一比值。
第一比值a:每个分片从所述其他客户端50获取的字节数和每个分片字节数的比值;即,a=L/N。
步骤S204C,根据所述第二数据和所述每个分片的字节数计算所述每个分片的第二比值。
第二比值b:每个分片向所述其他客户端50发送的字节数和每个分片字节数的比值;即,b=M/N。
步骤S204D,根据所述第一比值和/或所述第二比值调整所述目标分片列表,得到调整后的目标分片列表。
本申请人发现各个客户端之间的连接成功率和传输速率不可控,其中:(1)连接成功率不可控:在一个客户端和另一个客户端之间,可能会存在多个NAT(Network Address Translation,网络地址转换)网关;这些NAT网关的类型是不可控的,而这些NAT网关的类型组合会影响这两个客户端能否连接成功。(2)传输速率不可控:网络拥塞状态会随着繁忙时段、空闲时段的变化而变化,网络传输速率会根据是否跨省、是否跨运营商等状况变化而变化,客户端能使用的带宽也会随着用户是否在同一个网络内使用下载软件的变化而变化。故两个客户端之间的传输速率是不可控的。
鉴于上述各个客户端之间的连接成功率和传输速率不可控,有必要及时调整各个客户端获取分片的策略。例如,调整目标客户端40在获取某个分片时,应该从CDN服务器80中还是从其他客户端获取。为此,本实施例引入了目标分片列表,位于目标分片列表中的目标分片号对应的分片从CDN服务器80中获取,未位于目标分片列表中的其他分片号对应的分片可以从其他客户端获取。因此,通过调整目标分片列表,即可以调整目标客户端40获取分片的策略。具体的,目标客户端40可以对所述目标分片列表进行调整,例如,将一个或多个目标分片号从所述目标分片列表中移除和/或将目标片段文件对应的一个或多个其他分片的分片号添加到所述目标分片列表中。
若要对所述目标分片列表进行调整,则需要对目标客户端40当前连上的所有其他客户端50(以下简称局部P2P网络)进行分析(例如,分析当前P2P网络提供分片的能力),并根据分析结果调整目标客户端40自己负责的分片号。具体的,目标客户端40可以根据第一比值a和第二比值b进行上述分析,其中,通过对所述第一比值a和所述第二比值b分析得到以下两个结论:
第一,所述步骤S204D包括:若一个分片的第一比值小于第一预设比值,且所述分片的分片号不是所述目标分片列表中的任何一个目标分片号,则将所述分片的分片号添加到所述目标分片列表中。以分片X为例,如果分片X的第一比值小于第一预设比值时,可以考虑将所述分片X的分片号加入所述目标分片列表。即,如果分片X的第一比值a很小(如第一比值小于第一预设比值时),则说明当前P2P网络提供该分片的能力很弱。针对这种情况,本实施例可以将该分片X的分片号加入到目标分片列表,即由目标客户端40自己负责从CDN服务器80中下载该分片X,从而提高整个P2P网络中该分片X的分发效率。例如,目标客户端40连接有12个其他客户端,其中有2个其他客户端都负责从CDN服务器80下载分片X,但是这2个其他客户端与目标客户端40的传输速率都很慢以致目标客户端40无法从这2个其他客户端获取到分片X的全部数据,那么目标客户端40就会倾向于从CDN服务器80直接下载分片X,即调整所述目标分片列表,以将分片X的分片号加入所述目标分片列表中。
第二,所述步骤S204D还包括:若一个分片的第二比值小于第二预设比值,且所述分片的分片号为所述目标分片列表中的其中一个目标分片号,则将所述分片对应的目标分片号从所述目标分片列表中移除。以分片X为例,如果分片X的第二比值小于第二预设比值时,可以考虑将所述分片X的分片号从所述目标分片列表中移除。即,如果分片X的第二比值b很小(如第二比值小于第二预设比值时),则说明当前局部P2P网络提供该分片的能力有富余。针对这种情况,本实施例可以将该分片X的分片号从所述目标分片列表中移除,即由目标客户端40从P2P网络中下载该分片,从而降低CDN服务器80的数据分发压力。例如,目标客户端40连接有12个其他客户端,如果这12个其他客户端里有8个其他客户端负责从CDN服务器80获取分片X,虽然这8个其他客户端对目标客户端40传输都很慢,但是8个其他客户端获取的分片X全部加起来可以让目标客户端40在有限时间内获得完整分片X,那么目标客户端40就会倾向于不从CDN服务器80下载分片X,即,将该分片X的分片号从自己负责的列表里移除。
为了便于理解,本实施例提供了目标客户端40对目标片段文件中的各个分片被所述其他客户端请求的字节数(即,上传量);以及从所述其他客户端50获取的字节数(Peer下载量),如表1所示。为了更好理解,表1中的数据以百分比表示,其中,所述分片字节数N均为100%;
分片 |
上传量 |
Peer下载量 |
CDN下载量 |
X0 |
354% |
0% |
100% |
X1 |
0% |
20% |
80% |
X2 |
10% |
0% |
100% |
X3 |
0% |
100% |
0% |
表1
在表1中,目标分片为分片X0和分片X2,从表1可以得出以下结论:
(1)针对分片X0:会保持现状;原因是,当前P2P网络提供该分片的能力很弱。
(2)针对分片X1:会倾向于加入所述目标分片列表;原因是,当前P2P网络提供该分片的能力很弱。
(3)针对分片X2:会倾向于从所述目标分片列表里移除;原因是,当前P2P网络提供该分片的能力有富余。
(4)针对分片X3:会倾向于保持现状;原因是,当前P2P网络提供该分片的能力有富余。
本申请人还发现可能存在这样一种情况:多个客户端负责某个分片(如分片X2),但是,所有的这些客户端将各自负责的列表里移除这个分片(分片X2),从而导致从一个极端直接变成另一个极端。例如,P2P网络上有10000个客户端,发现分片X2是富足的,假设这10000个客户端同时把分片X2从自己负责的分片列表里移除,那么这个P2P网络里,分片X2就会立即变成稀缺的。
为防止上述情况,本实施例在执行对所述目标分片列表进行添加分片操作或者移除分片操作时,可以预先获取真正执行添加或者删除操作的概率,并根据这个概率配置预设值(如0.25,即,通过计算发现每次客户端需要“往自己负责的分片列表添加分片”,或者“从自己负责的分片列表删除分片”的时候,都只有25%的概率会真正执行添加或者删除操作)。
步骤S206,从所述CDN服务器中下载所述调整后的目标分片列表中的一个或多个目标分片号对应的一个或多个目标分片。
例如,调整前的目标分片列表中的一个或多个目标分片号为:Y2、Y3;
若所述调整后的目标分片列表中的一个或多个目标分片号为:Y2、Y4,则目标客户端40会从CDN服务器80中下载目标分片号Y2对应的目标分片、分片号Y4对应的目标分片。
在本实施例中可以在各个客户端的连接成功率和传输速率不可控的前提下,根据P2P网络的数据获取能力自动调整自身的分片下载策略,从而可以适应连接成功率和传输速率的变化,提高了P2P网络的数据传输效率。而且,上述过程不需要Tracker服务器的指示,有效减少Tracker服务器计算量和资源消耗。
在示例性的实施例中,如图4所示,所述点对点网络调度方法,还包括步骤S400~步骤S406,其中:
步骤S400,获取所述目标片段文件中的各个分片的第一下载进度。
目标客户端40在获取所述目标片段文件中的各个分片的同时,还可以获取所述各个分片对应的下载进度。所述第一下载进度为目标客户端40下载所述目标片段文件中的各个分片的下载进度。
步骤S402,向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度。
其他客户端50和目标客户端40均位于P2P网络中,均是P2P网络中的对等节点。目标客户端40可以向其他客户端50请求数据,例如,其他客户端50中各个分片的下载进度(即第二下载进度)。
在示例性的实施例中,如图5所示,所述步骤S402还可进一步的包括步骤S500~步骤S502,其中:步骤S500,通过请求参数向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度,所述请求参数包括所述目标片段文件的文件名;及步骤S502,从所述其他客户端接收响应数据,所述响应数据包括所述目标片段文件的每个分片的第二下载进度。目标客户端40可以从所述片段文件列表中获取所述目标片段文件的文件名,以根据所述文件名向所述其他客户端50请求所述目标片段文件的各个分片的第二下载进度(其他客户端50下载所述目标片段文件中各个分片的进度)。本实施例通过所述目标片段文件的文件名查询其他客户端50的下载目标片段文件的下载进度,提高了点对点网络中资源利用率,减少了CDN服务器80的数据分发压力。
步骤S404,根据所述第一下载进度与所述第二下载进度,从所述其他客户端下载所述目标片段文件中缺少的分片并更新所述第一下载进度。
由于播放一段直播视频,需要获取该段直播视频对应的完整数据,所以在目标客户端40从CDN服务器80请求下载所述目标分片的同时,还需要获取所述目标片段文件中的其他分片。若所述目标片段文件中的其他分片,目标客户端40也从CDN服务器80中获取,则会增大CDN服务器80的数据分发压力,从而降低目标客户端40获取所述目标片段文件中的其他分片的速度。因此,为了降低CDN服务器80的数据分发压力,目标客户端40可以从所述其他客户端50请求获取所述目标片段文件中除了所述目标分片的其他分片。在本实施例中,目标客户端40可以根据所述第一下载进度与第二下载进度(其他客户端50下载所述目标片段文件中各个分片的进度),确定可以从所述其他客户端50中的哪个客户端下载所述目标片段文件中缺少的分片。应理解,随着目标客户端40不断下载所述目标片段文件中的分片,所述第一下载进度也会随之变化。
为了便于理解,本实施例提供了目标客户端40和多个其他客户50(例如,其他客户端50A、其他客户端50B和其他客户端50C)下载所述目标片段文件中各个分片的下载进度。具体如表2所示:
客户端 |
分片X1 |
分片X2 |
分片X3 |
分片X4 |
目标客户端40 |
30% |
0% |
0% |
0% |
其他客户端50A |
50% |
0% |
40% |
100% |
其他客户端50B |
20% |
100% |
0% |
0% |
其他客户端50C |
0% |
90% |
80% |
50% |
表2
分片X1可以是目标分片列表的目标分片号对应的目标分片,因此,该分片X1的第一下载进度即指从CDN服务器80下载的进度。在另一些实施例中,分片X1也可以是目标分片列表之外的其他分片号对应的分片,此时,分片X1的第一下载进度可能是指从CDN服务器或其他客户端下载的进度。
其中,目标客户端40下载所述分片X1的进度是30%,其他客户端50A下载所述分片X1的进度是50%,那么目标客户端40可以向其他客户端50A请求所述分片X1从30%到50%这一部分的数据。同理,目标客户端可以向所述其他客户端50B请求下载分片X2的所有数据、向所述其他客户端50C请求下载分片X3的所有数据、向所述其他客户端50A请求下载分片X4的所有数据。在一些其他实施例中,还可以设置一个限额:在其他客户 端50A(或者其他客户端50B、50C,都是一样的)上传数据量到达限额的时候,拒绝继续发送数据,从而有效地保障用户体验。
在示例性的实施例中,所述点对点网络调度方法还包括:若所述目标片段文件的每一个分片的第二下载进度均不大于所述第一下载进度,则重新向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度。
如表2所示,当所述目标客户端40从所述其他客户端50A中下载到所述分片X1从30%到50%这一部分的数据后,所述分片X1的当前进度为50%。那么在表2中,所述其他客户端50A下载所述分片X1的进度,不大于所述目标客户端40下载所述分片X1的进度。此时,目标客户端40可以重新向所述点对点网络中其他客户端请求所述目标片段文件的各个分片的第二下载进度,以确定是否有其他客户客户端下载所述分片X1的进度,大于目标客户端40下载所述分片X1的进度。本实施例可以通过从所述其他客户端下载所述目标片段文件中缺少的分片,降低了CDN服务器80的数据分发压力,提高了目标客户端40获取所述目标片段文件中的其他分片的速度。
步骤S406,当播放器请求所述目标片段文件时,停止从所述其他客户端下载所述目标片段文件中缺少的分片,并从所述CDN服务器下载所述目标片段文件中缺少的分片,并更新所述第一下载进度。
所述目标客户端40将下载完整的片段文件存放到播放器的缓存区中。当所述播放器请求所述目标片段文件时,则说明所述缓存区中的片段文件已经播放完毕。为了确保直播视频顺利播放,此时若所述目标片段文件中还有未下载完成的分片,则停止从所述其他客户端下载所述目标片段文件中缺少的分片,并从所述CDN服务器下载所述目标片段文件中缺少的分片,同时更新所述第一下载进度。
在示例性的实施例中,所述步骤S406还可进一步的包括:当所述目标片段文件完整时,通过所述播放器播放所述目标片段文件。当所述播放器请求所述目标片段文件时,本实施例可以通过向所述CDN服务器下载所述目标片段文件中缺少的分片,确保了直播视频的顺利播放。避免出现直播长时间中断的问题,提高了直播视频播放的稳定性。
为了方便理解,本实施例还提供了点对点网络调度方法的具体流程图,如图6所示。
步骤S600,目标客户端40获取片段文件列表;
步骤S602,获取所述目标片段文件的各个分片的第一下载进度;所述各个分片包括从CDN服务器80下载的一些目标分片,以及包括从其他客户端下载的其他分片;
步骤S604,目标客户端40向点对点网络中的其他客户端50请求所述目标片段文件的各个分片的第二下载进度;
步骤S606,目标客户端40根据所述第一下载进度与所述第二下载进度,从所述其他客户端下载所述目标片段文件中缺少的分片;
步骤S608,目标客户端40判断所述目标片段文件的一个分片的第二下载进度是否大于所述第一下载进度;若所述第二下载进度不大于所述第一下载进度时,则返回步骤S604;
步骤S610,当播放器请求所述目标片段文件时,则停止从所述其他客户端50下载所述目标片段文件中缺少的分片,并从所述CDN服务器80下载所述目标片段文件中缺少的分片;当所述目标片段文件完整时,通过所述播放器播放所述目标片段文件。
实施例二
图7示意性示出了根据本申请实施例二的点对点网络调度***的框图,该点对点网络调度***可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施例。本申请实施例所称的程序模块是指能够完成特定功能的一系列计算机可读指令段,以下描述将具体介绍本实施例各程序模块的功能。
如图7所示,该点对点网络调度***700可以包括获列表获取模块710、第一下载模 块720、分片调整模块730和第二下载模块740,其中:
第一获取模块710,用于获取片段文件列表,所述片段文件列表包括多个片段文件,每个片段文件包括一个或多个分片,每个分片对应一个分片号。
第一下载模块720,用于根据所述片段文件列表与一个或多个目标分片号,从CDN服务器下载所述一个或多个目标分片号对应的一个或多个目标分片;其中,所述一个或多个目标分片号位于目标分片列表中。
分片调整模块730,用于根据向其他客户端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表。
在示例性的实施例中,所述分片调整模块730还用于:获取每个分片的第一数据、每个分片的第二数据、每个分片的字节数,所述第一数据为每个分片从所述其他客户端获取的字节数,所述第二数据为每个分片向所述其他客户端发送的字节数;根据所述第一数据和所述每个分片的字节数计算所述每个分片的第一比值;根据所述第二数据和所述每个分片的字节数计算所述每个分片的第二比值;根据所述第一比值和/或所述第二比值调整所述目标分片列表,得到调整后的目标分片列表。
在示例性的实施例中,所述分片调整模块730还用于:若一个分片的第一比值小于第一预设比值,且所述分片的分片号不是所述目标分片列表中的任何一个目标分片号,则将所述分片的分片号添加到所述目标分片列表中。
在示例性的实施例中,所述分片调整模块730还用于:若一个分片的第二比值小于第二预设比值,且所述分片的分片号为所述目标分片列表中的其中一个目标分片号,则将所述分片对应的目标分片号从所述目标分片列表中移除。
第二下载模块740,用于从所述CDN服务器中下载所述调整后的目标分片列表中的一个或多个目标分片号对应的一个或多个目标分片。
在示例性的实施例中,所述点对点网络调度***700还包括进度下载模块,所述进度下载模块,用于:获取所述目标片段文件中的各个分片的第一下载进度;向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度;根据所述第一下载进度与所述第二下载进度,从所述其他客户端下载所述目标片段文件中缺少的分片并更新所述第一下载进度;及当播放器请求所述目标片段文件时,停止从所述其他客户端下载所述目标片段文件中缺少的分片,并从所述CDN服务器下载所述目标片段文件中缺少的分片,并更新所述第一下载进度。
在示例性的实施例中,所述进度下载模块还用于:通过请求参数向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度,所述请求参数包括所述目标片段文件的文件名;及从所述其他客户端接收响应数据,所述响应数据包括所述目标片段文件的每个分片的第二下载进度。
在示例性的实施例中,所述进度下载模块还用于:若所述目标片段文件的每一个分片的第二下载进度均不大于所述第一下载进度,则重新向所述其他客户端请求所述目标片段文件的各个分片的第二下载进度。
在示例性的实施例中,所述点对点网络调度***700还包括播放模块,所述播放模块,用于:当所述目标片段文件完整时,通过所述播放器播放所述目标片段文件。
实施例三
图8示意性示出了根据本申请实施例三的适于实现点对点网络调度方法的计算机设备的硬件架构示意图。本实施例中,计算机设备800可以是图1中的目标客户端40或其他客户端50。计算机设备800是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。例如,可以是移动设备、平板设备、膝上型计算机、工作站、虚拟现实设备,游戏设备、机顶盒、数字流媒体设备、车辆终端、智能电视、机顶盒、电子书阅读器等。如图8所示,计算机设备800至少包括但不限于:可通过***总线相互通信链接 存储器810、处理器820、网络接口830。其中:
存储器810至少包括一种类型的计算机可读存储介质,可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,存储器810可以是计算机设备800的内部存储模块,例如该计算机设备800的硬盘或内存。在另一些实施例中,存储器810也可以是计算机设备800的外部存储设备,例如该计算机设备800上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,存储器810还可以既包括计算机设备800的内部存储模块也包括其外部存储设备。本实施例中,存储器810通常用于存储安装于计算机设备800的操作***和各类应用软件,例如点对点网络调度方法的程序代码等。此外,存储器810还可以用于暂时地存储已经输出或者将要输出的各类数据。
处理器820在一些实施例中可以是中央处理器(Central Processing Unit,简称为CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器820通常用于控制计算机设备800的总体操作,例如执行与计算机设备800进行数据交互或者通信相关的控制和处理等。本实施例中,处理器820用于运行存储器810中存储的程序代码或者处理数据。
网络接口830可包括无线网络接口或有线网络接口,该网络接口830通常用于在计算机设备800与其他计算机设备之间建立通信链接。例如,网络接口830用于通过网络将计算机设备800与外部终端相连,在计算机设备800与外部终端之间的建立数据传输通道和通信链接等。网络可以是企业内部网(Intranet)、互联网(Internet)、全球移动通讯***(Global System of Mobile communication,简称为GSM)、宽带码分多址(Wideband Code Division Multiple Access,简称为WCDMA)、4G网络、5G网络、蓝牙(Bluetooth)、Wi-Fi等无线或有线网络。
需要指出的是,图8仅示出了具有部件1010-1030的计算机设备,但是应理解的是,并不要求实施所有示出的部件,可以替代的实施更多或者更少的部件。
在本实施例中,存储于存储器810中的点对点网络调度方法还可以被分割为一个或者多个程序模块,并由一个或多个处理器(本实施例为处理器820)所执行,以完成本申请。
实施例四
本实施例还提供一种计算机可读存储介质,计算机可读存储介质其上存储有计算机可读指令,计算机可读指令被处理器执行如下步骤:获取片段文件列表,所述片段文件列表包括多个片段文件,每个片段文件包括一个或多个分片,每个分片对应一个分片号;根据所述片段文件列表与一个或多个目标分片号,从CDN服务器下载所述一个或多个目标分片号对应的一个或多个目标分片;其中,所述一个或多个目标分片号位于目标分片列表中;根据向其他客户端获取和/或发送的数据信息调整所述目标分片列表,得到调整后的目标分片列表;及从所述CDN服务器中下载所述调整后的目标分片列表中的一个或多个目标分片号对应的一个或多个目标分片。
本实施例中,计算机可读存储介质包括闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等。在一些实施例中,计算机可读存储介质可以是计算机设备的内部存储单元,例如该计算机设备的硬盘或内存。在另一些实施例中,计算机可读存储介质也可以是计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(Smart Media Card,简称为SMC),安全数字(Secure Digital,简称为SD)卡,闪存卡(Flash Card)等。当然,计算机可读存储介质还可以既包括计算机设备的内部存储单元也包括其外部存储设备。本实施例中,计算机可读存储介质通常用于存储安装于计算机设备 的操作***和各类应用软件,例如实施例中的点对点网络调度方法的程序代码等。此外,计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的各类数据。
显然,本领域的技术人员应该明白,上述的本申请实施例的各模块或各步骤可以用通用的计算装置来实现,它们可以集合中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集合成电路模块,或者将它们中的多个模块或步骤制作成单个集合成电路模块来实现。这样,本申请实施例不限制于任何特定的硬件和软件结合。
以上仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。