具体实施方式
在本发明实施例中,发布中心服务器从每个互联网数据中心的所有客户端设备中选择一个服务客户端设备。
发布中心服务器向所述服务客户端设备发送从发布中心服务器下载数据的命令,将已经完成下载数据和没有完成下载数据的服务客户端设备的信息分别进行保存。发布中心服务器还向普通服务客户端设备发送从已经完成下载数据的服务客户端设备下载数据的命令,直到所有的服务客户端设备和普通客户端设备都完成下载数据。
为便于对本发明实施例的理解,下面将结合附图以几个具体实施例为例做进一步的解释说明,且各个实施例并不构成对本发明实施例的限定。
实施例一
该实施例提供的一种基于P2P的数据传输方法的原理示意图如图1所示,具体处理流程如图2所示,包括如下步骤:
步骤21、发布中心服务器为每个IDC(Internet Data Center,互联网数据中心)选择一个或多个服务客户端设备。
发布中心服务器从每个IDC中的所有客户端设备中选择一个或多个可以从客户端设备下载数据的服务客户端设备。上述服务客户端设备可以根据IDC内部的各个客户端设备的负载情况来选择,选择负载比较小的客户端设备作为服务客户端设备。在实际应用中,还可以选择最先向发布中心服务器发送数据下载请求的客户端设备作为服务客户端设备。
在服务客户端设备所在的IDC内部,其它客户端设备可以从上述服务客户端设备下载数据。在实际应用中,可以设定从上述服务客户端设备下载数据的其它客户端设备的最大数量。
发布中心服务器定期分别与各个服务客户端设备进行心跳检测,获取与各个服务客户端设备之间的链路状态。
步骤22、发布中心服务器向下载任务队列中的一定数量的服务客户端设备发送数据下载命令。
在系统初始化时,发布中心服务器集中保存所有的数据,该数据可以为需要发布到各个客户端设备的应用程序安装包等文件。发布中心服务器给每个数据启动一个任务,在该任务中维持一个下载任务队列和下载完成队列。上述下载任务队列中包括需要从发布中心服务器下载数据的各个服务客户端设备,该队列中的各个服务客户端设备可以按照向发布中心服务器发送数据下载请求的先后顺序来排列。
发布中心服务器根据需要传输的数据流量,以及到各个服务客户端设备的带宽等信息,确定上述下载任务队列中的一定数量的服务客户端设备可以从发布中心服务器下载数据,于是,向该一定数量的服务客户端设备发送数据下载命令,该数据下载命令中包括发布中心服务器的提供数据下载任务的端口信息。
发布中心服务器和各个服务客户端设备之间的通信协议可以为TCP(Transmission Control Protocol,传输控制协议)协议。
步骤23、服务客户端设备从发布中心服务器上下载数据,向发布中心服务器发送下载完成响应。
上述一定数量的服务客户端设备接收到发布中心服务器发送的数据下载命令后,根据数据下载命令中包含的上述发布中心服务器上提供数据下载任务的端口信息,从发布中心服务器上下载数据,在下载完毕后,向发布中心服务器发送下载完成响应,该下载完成响应中可以包含该服务客户端设备提供数据下载业务的端口信息。
上述服务客户端设备向发布中心服务器下载数据的方式可以采用完整下载模式的方式或切片下载模式的方式。
当采用完整下载模式的方式时,每个服务客户端设备都从发布中心服务器下载一份完整的数据。
当采用切片下载模式的方式时,发布中心服务器对整份数据按固定大小进行切片(比如1M为1切片),每个服务客户端设备只从发布中心服务器下载部分数据切片。在发布中心服务器中需要保存各个数据切片在各个服务客户端设备、普通客户端设备中的分布列表。上述分布列表可以如下述表1所示
表1:
发布中心服务器接收到服务客户端设备发送的下载完成响应后,将该服务客户端设备从上述下载任务队列中移除,将该服务客户端设备加入到下载完成队列中。
发布中心服务器将所述下载完成队列中的服务客户端设备的标识信息、提供下载服务的端口信息,以及服务客户端设备所在的互联网数据中心的标识信息进行关联保存。
步骤24、发布中心服务器通知普通客户端设备从服务客户端设备下载数据,在所有的客户端设备都下载完成数据后,发布中心服务器将下载任务队列和下载完成队列进行删除。
在已经有服务客户端设备从发布中心服务器下载完成数据后,发布中心服务器再接收到不是服务客户端设备的普通客户端设备发送的数据下载请求后,查询上述关联保存的信息中是否包含该普通客户端设备所在的IDC的标识信息,如果包含,则向该普通客户端设备发送数据下载命令,该数据下载命令中包含已经完成数据下载任务的该普通客户端设备所在的IDC中的所有服务客户端设备列表,并且包含每个服务客户端设备提供数据下载业务的端口信息;如果没有包含,则将上述数据下载请求进行缓存,将该普通客户端设备加入等待队列,直到上述下载完成队列中包含该普通客户端设备所在的IDC的标识信息,再处理上述数据下载请求。
当服务客户端设备向发布中心服务器下载数据的方式采用完整下载模式时,上述普通客户端设备接收到上述数据下载命令后,可以选择向该普通客户端设备所在的IDC中的所有服务客户端设备列表中的一个服务客户端设备发送下载数据的请求,在接收到该服务客户端设备发送的下载数据的命令后,从该服务客户端设备下载数据。上述普通客户端设备也可以选择向上述服务客户端设备列表中的多个服务客户端设备发送下载数据的请求,从每个服务客户端设备中下载部分数据后,再将所有的部分数据组合成一份完整的数据。
当服务客户端设备向发布中心服务器下载数据的方式采用切片下载模式时,上述普通客户端设备接收到的上述数据下载命令中还需要包括各个数据块在多个服务客户端设备中的分布列表,上述普通客户端设备根据该分布列表从多个服务客户端设备分别下载相应的数据切片,再将所有的数据切片组合成一份完整的数据。
在实际应用中,上述发布中心服务器需控制每次向同一个服务客户端设备下载数据的普通客户端的数目。
上述普通客户端设备在下载数据完毕后,向发布中心服务器和服务客户端设备发送下载完成响应。服务客户端设备和一个IDC内部的普通客户端设备之间的通信协议可以为TCP协议。
在所有的服务客户端设备和普通客户端设备都下载完成一份完整的数据后,上述发布中心服务器将上述下载任务队列和下载完成队列进行删除,将所述任务终止。在新的数据到了后,再启动新的任务,建立新的下载任务队列和下载完成队列。
实施例二
本发明实施例还提供了一种发布中心服务器,其具体实现结构如图3所示,包括如下模块:
服务客户端设备选定模块31,用于从每个互联网数据中心的所有客户端设备中选择一个或多个服务客户端设备;
服务客户端设备处理模块32,用于向所述服务客户端设备选定模块所选择的服务客户端设备发送从发布中心服务器下载数据的命令,将已经完成下载数据和没有完成下载数据的服务客户端设备的信息分别进行保存;
普通客户端设备处理模块33,用于向普通服务客户端设备发送从已经完成下载数据的服务客户端设备下载数据的命令,直到所有的服务客户端设备和普通客户端设备都完成下载数据。
所述的服务客户端设备处理模块32具体包括:
队列管理模块321,用于针对每个数据维持一个下载任务队列和下载完成队列;所述下载任务队列中包括没有从发布中心服务器完成下载数据的服务客户端设备的信息,所述下载完成队列中包括已经从发布中心服务器完成下载数据的服务客户端设备的信息;
命令管理模块322,用于向所述下载任务队列中的服务客户端设备发送从发布中心服务器下载数据的命令,在接收到服务客户端设备返回的下载完成响应后,将所述服务客户端设备从所述下载任务队列中移除,并加入到所述下载完成队列中;
信息存储模块323,用于将所述下载完成队列中的服务客户端设备的标识信息、提供下载服务的端口信息,以及服务客户端设备所在的互联网数据中心的标识信息进行关联保存。
所述的普通客户端设备处理模块33具体包括:
查询处理模块331,用于在接收到普通服务客户端设备发送的下载数据的请求后,查询所述信息存储模块中是否保存所述普通客户端设备所在的互联网数据中心的标识信息;
命令下发模块332,用于当所述查询处理模块的查询结果为是时,则向所述普通客户端设备发送数据下载命令,该数据下载命令中包含所述普通客户端设备所在的互联网数据中心中的已经完成数据下载的所有服务客户端设备列表,并且包含每个服务客户端设备的提供数据下载业务的端口信息;
缓存处理模块333,用于当所述查询处理模块的查询结果为否时,则将所述数据下载请求进行缓存,直到所述查询处理模块的查询结果为是,将缓存的所述数据下载请求进行清除。
本发明实施例还提供了一种服务客户端设备,其具体实现结构如图4所示,包括如下的模块:
数据下载模块41,用于向发布中心服务器发送数据下载请求,根据接收到的从发布中心服务器下载数据的命令,从发布中心服务器下载一份完整的数据或者下载一个或多个数据切片,向发布中心服务器返回携带其提供数据下载业务的端口信息的下载完成响应;
上述服务客户端设备从发布中心服务器下载数据的方式可以采用完整下载模式的方式或切片下载模式的方式。
当采用完整下载模式的方式时,每个服务客户端设备都从发布中心服务器下载一份完整的数据。
当采用切片下载模式的方式时,发布中心服务器对整份数据按固定大小进行切片(比如1M为1切片),每个服务客户端设备只从发布中心服务器下载部分数据切片。在发布中心服务器中需要保存各个数据切片在各个服务客户端设备、普通客户端设备中的分布列表。
下载业务提供模块42,用于接收到普通客户端设备发送的下载数据的请求后,向所述普通客户端设备提供数据下载业务。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
综上所述,本发明实施例采用P2P原理,每一个客户端设备都可以向其它服务节点提供数据传输服务;发布中心服务器只需将原始文件完整部署至各个IDC中的一台客户端设备或切片后分发到该IDC的不同客户端;其它业务机器即可去本IDC拥有切片数据的客户端设备下载数据。从而可以将发布中心服务器的文件快速的分发到各个客户端设备中。
本发明实施例大大地减少了发布中心的数据流量,又将大多数流量限制在一个机房内,减少了异地流量和专线流量;在切片下载模式下,可极大的利用各个客户机的网络带宽。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。