本申请涉及网络技术领域,特别涉及一种资源获取、分发、下载方法、装置、设备及存储介质。
背景技术:
点对点(peer-to-peer,以下简称:p2p)网络是一种主要由大量的对等节点(以下简称:peer)组成的网络架构,不同peer之间关系对等,可以互相传输资源。在资源传输过程中,每个peer既会从p2p网络中其他拥有资源的peer,获取所需的资源,也会将已下载的资源,分发给p2p网络中每个需要该资源的peer,从而极大地提高了资源在网络中的传输效率,每个资源的下载者越多,则该资源的下载速度会越快。
针对任两个peer之间传输资源的具体过程,以资源的下载者为peera,资源的提供者为peerb为例,首先,peera会与peerb进行传输控制协议(transmissioncontrolprotocol,以下简称:tcp)三次握手,从而建立tcp连接。之后,peera会与peerb通过该tcp连接,基于peer连线协议(peerwireprotocol)进行p2p握手。之后,peera会与peerb交换彼此的位图(piecesbitmap),位图用于指示对应的peer已经下载了哪些资源片段(piece),交换彼此的位图后,peera可以确定需要从peerb下载的资源片段,并向peerb发送获取请求(即request消息),该获取请求用于请求所需的资源片段。peerb接收到获取请求后,会将资源片段发送给peera,peera会接收资源片段,从而得到一个资源片段。进一步地,peera可以通过同样的方式,并行地与下载了其他资源片段的每个peer进行通信,接收每个peer发送的资源片段,最终根据资源的所有资源片段,拼接得到完整的资源。
在实现本申请的过程中,发明人发现相关技术至少存在以下问题:
目前的p2p网络中没有鉴权机制,难以保证资源在p2p网络中传输的安全性。
技术实现要素:
本申请实施例提供了一种资源获取、分发、下载方法、装置、设备及存储介质,能够解决相关技术中传输资源时安全性较差的问题。所述技术方案如下:
第一方面,提供了一种资源获取方法,所述方法包括:
第一节点接收一个或多个第二节点的第一数据包,一个或多个所述第一数据包为使用密钥对中的公钥,对目标资源的资源片段加密后得到,所述密钥对用于在p2p网络中的所述第一节点与一个或多个第二节点之间对所述目标资源加密,所述密钥对包括所述公钥和私钥;
所述第一节点使用所述私钥,对一个或多个所述第一数据包解密,得到所述目标资源的一个或多个资源片段;
所述第一节点根据所述一个或多个资源片段,确定所述目标资源。
本实施例提供的方法,为p2p网络引入了鉴权机制,不同peer节点进行通信时,会使用密钥对加密,拥有资源的peer节点可以使用密钥对中的公钥,对资源加密后发送给其他peer节点,请求资源的peer节点,可以使用密钥对中的私钥,对加密了的资源解密,将资源从密文转换为明文,如此,可以避免资源在p2p网络中传输时被窃取所带来的安全隐患,极大地提升了p2p网络的安全性。并且,每个资源均可以具有对应的密钥对,不同用户的资源能使用不同的密钥对加密,从而保证任一用户使用自己的密钥,无法对其他用户的资源解密,也就无法访问到其他用户的资源,实现了不同用户的资源相互隔离。尤其是,应用于公有云中分发镜像的业务中,可以提供为一种基于p2p网络的、安全地分发镜像的方案,能够保证公有云的租户隔离。
可选地,所述密钥对用于对所述p2p网络中传输所述目标资源的一条或多条链路加密,所述一条或多条链路为所述第一节点与所述一个或多个第二节点之间的链路;
针对所述第一节点与所述一个或多个第二节点之间的任一链路,每当所述第一节点通过所述链路接收到任一数据包时,所述第一节点使用所述私钥,对所述数据包解密。
通过这种链路加密的方式,可以看作为目标资源,在第一节点与第二节点之间架设了一条加密通道,第一节点与第二节点不仅会针对包含目标资源内容的数据包加密和/或解密,还会为目标资源相关的其他数据包加密和/或解密,例如在传输目标资源之前,第一节点与第二节点交互的对目标资源的获取请求,以及其它一些通信消息和控制信令,在链路中也会以密文的形式传输,从而极大地提升了不同peer节点之间传输资源的安全性。
可选地,所述接收所述一个或多个第二节点的第一数据包之前,所述方法还包括:
对于所述一个或多个第二节点中的任一第二节点,所述第一节点生成对所述目标资源的获取请求;
所述第一节点使用所述公钥,对所述获取请求加密,得到第二数据包;
所述第一节点向所述第二节点发送所述第二数据包。
可选地,所述方法还包括:
第一节点获取目标资源对应的密钥对。
可选地,所述第一节点获取目标资源对应的密钥对,包括:
所述第一节点接收所述p2p网络中的跟踪节点的密钥对;或,
所述第一节点接收所述p2p网络中的跟踪节点的数字证书,所述数字证书携带所述目标资源的标识;根据所述数字证书,生成密钥对。
可选地,所述第一节点获取目标资源对应的密钥对之前,所述方法还包括:
所述第一节点向所述跟踪节点,发送认证节点的令牌数据,所述令牌数据用于指示所述第一节点具有获取所述目标资源的权限。
可选地,所述第一节点接收所述一个或多个第二节点的第一数据包之前,所述方法还包括:
所述第一节点向所述一个或多个第二节点,发送认证节点的令牌数据,所述令牌数据用于指示所述第一节点具有获取所述目标资源的权限。
通过这种实现方式,实现了peer节点与peer节点之间的权限确认,当第二节点根据第一节点的令牌数据,确认第一节点具有获取目标资源的权限时,才会将目标资源返回给第一节点,否则会拒绝将目标资源返回给第一节点,从而避免peer节点获取到自身无权获取的资源的情况。
可选地,所述令牌数据包括至少一种权限标识,所述至少一种权限标识用于指示所述第一节点对所述目标资源具有的至少一种权限,所述至少一种权限包括获取所述目标资源的权限。
可选地,所述发送认证节点的令牌数据,包括:
所述第一节点使用所述私钥,为所述令牌数据添加数字签名,得到第三数据包;
所述第一节点发送所述第三数据包。
可选地,所述目标资源为一个镜像层。
可选地,所述目标资源划分为一个或多个第一资源片段,每个第一资源片段划分为一个或多个第二资源片段;
所述方法还包括:
在下载过程中,对于所述目标资源中的任一第一资源片段,所述第一节点按照bt规则,对所述第一资源片段中的一个或多个第二资源片段下载;
当所述一个或多个第二资源片段下载完成时,所述第一节点按照所述一个或多个第二资源片段在所述目标资源中的排列顺序,向业务处理模块依次发送所述一个或多个第二资源片段;
所述第一节点继续下载所述目标资源中所述第一资源片段的下一个第一资源片段,直至所述目标资源下载完成。
可选地,所述方法还包括:
所述第一节点向所述p2p网络中的跟踪节点,发送所述第一节点在云计算服务中的基础设施即服务(infrastructureasaservice,以下简称:iaas)特征信息;
所述第一节点从所述跟踪节点接收所述p2p网络的对等节点信息,所述对等节点信息包括一个或多个节点标识、所述一个或多个节点标识在所述对等节点信息中的优先级、与对应节点与所述第一节点的iaas特征信息的匹配程度对应;
所述第一节点根据所述对等节点信息,选择所述p2p网络中的一个或多个第二节点;
所述第一节点从选择的一个或多个第二节点,下载所述目标资源。
可选地,所述第一节点根据所述对等节点信息,选择所述p2p网络中的一个或多个第二节点,包括:
所述第一节点根据所述对等节点信息,确定第一类节点,作为所述一个或多个第二节点,所述第一类节点的宿主机与所述第一节点的宿主机相同;和/或,
所述第一节点根据所述对等节点信息,确定第二类节点,作为所述一个或多个第二节点,所述第二类节点与所述第一节点位于同一机架;和/或,
所述第一节点根据所述对等节点信息,确定第三类节点,作为所述一个或多个第二节点,所述第三类节点与所述第一节点位于同一机房;和/或,
所述第一节点根据所述对等节点信息,确定第四类节点,作为所述一个或多个第二节点,所述第四类节点与所述第一节点位于同一地域。
可选地,所述对等节点信息中第一类节点的标识具有第一优先级,所述第一类节点的宿主机与所述第一节点的宿主机相同;和/或,
所述对等节点信息中第二类节点的标识具有第二优先级,所述第二类节点与所述第一节点位于同一机架;和/或,
所述对等节点信息中第三类节点的标识具有第三优先级,所述第三类节点与所述第一节点位于同一机房;和/或,
所述对等节点信息中第四类节点的标识具有第四优先级,所述第四类节点与所述第一节点位于同一地域;
其中,所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级用于指示所述第一节点选中对应节点的优先程度,所述第一优先级、所述第二优先级、所述第三优先级、所述第四优先级按照从高到低的顺序排序。
第二方面,提供了一种资源分发方法,所述方法包括:
第二节点使用密钥对中的公钥,对目标资源的资源片段加密后,得到第一数据包,所述密钥对用于在p2p网络中的所述第二节点与一个或多个第一节点之间对所述目标资源加密,所述密钥对包括所述公钥和私钥;
所述第二节点向所述一个或多个第一节点,发送一个或多个所述第一数据包。
本实施例提供的方法,为p2p网络引入了鉴权机制,不同peer节点进行通信时,会使用密钥对加密,拥有资源的peer节点可以使用密钥对中的公钥,对资源加密后发送给其他peer节点,请求资源的peer节点,可以使用密钥对中的私钥,对加密了的资源解密,将资源从密文转换为明文,如此,可以避免资源在p2p网络中传输时被窃取所带来的安全隐患,极大地提升了p2p网络的安全性。并且,每个资源均可以具有对应的密钥对,不同用户的资源能使用不同的密钥对加密,从而保证任一用户使用自己的密钥,无法对其他用户的资源解密,也就无法访问到其他用户的资源,实现了不同用户的资源相互隔离。尤其是,应用于公有云中分发镜像的业务中,可以提供为一种基于p2p网络的、安全地分发镜像的方案,能够保证公有云的租户隔离。
可选地,所述密钥对用于对所述p2p网络中传输所述目标资源的一条或多条链路加密,所述一条或多条链路为所述第二节点与所述一个或多个第一节点之间的链路;
针对所述第一节点与所述一个或多个第二节点之间的任一链路,每当所述第二节点生成待通过所述链路传输的任一数据包时,所述第二节点使用所述公钥,对所述数据包加密。
可选地,所述发送一个或多个所述第一数据包之前,所述方法还包括:
所述第二节点接收所述一个或多个第一节点的令牌数据,令牌数据用于指示对应的第一节点具有获取所述目标资源的权限;
所述第二节点根据一个或多个令牌数据,确定所述一个或多个第一节点具有获取所述目标资源的权限。
可选地,所述方法还包括:
所述第二节点获取所述目标资源对应的密钥对。
第三方面,提供了一种资源下载方法,所述方法包括:
第一节点确定目标资源,所述目标资源划分为一个或多个第一资源片段,每个第一资源片段划分为一个或多个第二资源片段;
所述第一节点在下载过程中,对于所述目标资源中的任一第一资源片段,按照bt规则,对所述第一资源片段中的一个或多个第二资源片段下载;
当所述一个或多个第二资源片段下载完成时,所述第一节点按照所述一个或多个第二资源片段在所述目标资源中的排列顺序,向业务处理模块依次发送所述一个或多个第二资源片段;
所述第一节点继续下载所述目标资源中所述第一资源片段的下一个第一资源片段,直至所述目标资源下载完成。
而本申请实施例中,由于目标资源中每个第一资源片段均顺序下载,即,先下载第一个大片,再下载第二个大片,在此基础上,同一个资源片段中的不同第二资源片段会顺序发送给业务处理模块,例如,大片中的不同piece会顺序发送给docker客户端。那么,业务处理模块会顺序接收到每个第二资源片段(piece),即业务处理模块接收的piece的顺序恰好为资源中piece的排列顺序,因此业务处理模块依次处理每个接收到的piece时,可以保证业务处理结果的正确性。
进一步地,修改了原生的p2p网络的处理逻辑,使用分片部分乱序下载,能够提升整体分发速度,可以通过p2p网络,快速分发大量资源。在公有云中分发镜像的业务中,可以解决镜像在大批量分发时,分发速度慢的问题。
进一步地,本申请实施例提供的p2p网络为网状结构,p2p网络中不同peer节点可以随机连接,网状结构中的任一链路用于对资源进行双向传输,即,在p2p网络中的任意链路上,资源既可以上行传输也可以下行传输,从而可以充分地发挥peer与peer的tcp双工通道的传输优势。
进一步地,本申请实施例提供的p2p网络中无需设置超级节点,目标资源可以直接从源节点分发至各个peer节点,部署结构较为简单。
第四方面,提供了一种资源下载方法,所述方法包括:
第一节点向p2p网络中的跟踪节点,发送所述第一节点在云计算服务中的iaas特征信息;
所述第一节点从所述跟踪节点接收所述p2p网络的对等节点信息,所述对等节点信息包括一个或多个节点标识、所述一个或多个节点标识的优先级、与对应节点与所述第一节点的iaas特征信息的匹配程度对应;
所述第一节点根据所述对等节点信息,选择所述p2p网络中的一个或多个第二节点;
所述第一节点从所述一个或多个第二节点,下载目标资源。
本实施例提供的方法,结合云计算服务的机房构架体系,为p2p网络中的peer节点设计了优先级规则,第一节点会优先从同一宿主机的其他peer节点,获取目标资源,其次,优先从同一机架的其他peer节点,获取目标资源,再次,优先从同一机房的其他peer节点,获取目标资源,最后,才会跨机房,从其他机房的peer节点,获取目标资源。如此,可以适用在公有云中,实现了就近拉取目标资源,可以保证本地的peer节点最优先地被运用到,从而可以最大地减少跨主机、跨机房的网络流量。
第五方面,提供了一种资源下载方法,所述方法包括:
跟踪节点接收对等p2p网络中第一节点的iaas特征信息;
所述跟踪节点根据所述p2p网络中每个节点的iaas特征信息与所述第一节点的iaas特征信息的匹配程度,生成对等节点信息,所述对等节点信息包括一个或多个节点标识,所述一个或多个节点标识的排列顺序与所述匹配程度对应;
所述跟踪节点向所述第一节点,发送所述对等节点信息。
本实施例提供的方法,结合云计算服务的机房构架体系,为p2p网络中的peer节点设计了优先级规则,第一节点会优先从同一宿主机的其他peer节点,获取目标资源,其次,优先从同一机架的其他peer节点,获取目标资源,再次,优先从同一机房的其他peer节点,获取目标资源,最后,才会跨机房,从其他机房的peer节点,获取目标资源。如此,可以适用在公有云中,实现了就近拉取目标资源,可以保证本地的peer节点最优先地被运用到,从而可以最大地减少跨主机、跨机房的网络流量。
第六方面,提供了一种资源获取装置,用于执行第一方面或第一方面的任一种可能实现方式中的方法。具体地,该资源获取装置包括用于执行上述第一方面或第一方面的任一种可能实现方式中的方法的功能模块。
第七方面,提供了一种资源分发装置,用于执行第二方面或第二方面的任一种可能实现方式中的方法。具体地,该资源分发装置包括用于执行上述第二方面或第二方面的任一种可能实现方式中的方法的功能模块。
第八方面,提供了一种资源下载装置,用于执行第三方面或第三方面的任一种可能实现方式中的方法。具体地,该资源下载装置包括用于执行上述第三方面或第三方面的任一种可能实现方式中的方法的功能模块。
第九方面,提供了一种资源下载装置,用于执行第三方面或第三方面的任一种可能实现方式中的方法。具体地,该资源下载装置包括用于执行上述第四方面或第四方面的任一种可能实现方式中的方法的功能模块。
第十方面,提供了一种资源下载装置,用于执行第五方面或第五方面的任一种可能实现方式中的方法。具体地,该资源下载装置包括用于执行上述第五方面或第五方面的任一种可能实现方式中的方法的功能模块。
第十一方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如用于执行第一方面或第一方面的任一种可能实现方式中的方法中的资源获取方法所执行的操作。
第十二方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如用于执行第二方面或第而方面的任一种可能实现方式中的方法中的资源分发方法所执行的操作。
第十三方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第三方面中的资源下载方法所执行的操作。
第十四方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第四方面中的资源下载方法所执行的操作。
第十五方面,提供了一种计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第五方面中的资源下载方法所执行的操作。
第十六方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如第一方面或第一方面的任一种可能实现方式中的方法中的资源获取方法所执行的操作。
第十七方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第二方面或第二方面的任一种可能实现方式中的方法中的资源获取方法所执行的操作。
第十八方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第三方面中的资源下载方法所执行的操作。
第十九方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第四方面中的资源下载方法所执行的操作。
第二十方面,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由所述处理器加载并执行以实现第五方面中的资源下载方法所执行的操作。
第二十一方面,提供了一种芯片,所述芯片包括处理器和/或程序指令,当所述芯片运行时,实现上述任一方面或任一方面中任一种可能实现方式所提供的方法。
附图说明
图1是本申请实施例提供的一种应用场景的示意图;
图2是本申请实施例提供的一种应用场景的示意图;
图3是本申请实施例提供的一种实施环境的示意图;
图4是本申请实施例提供的一种镜像分发系统的架构示意图;
图5是本申请实施例提供的一种计算机设备的结构示意图;
图6是本申请实施例提供的一种资源获取方法的流程图;
图7是本申请实施例提供的一种令牌数据的示意图;
图8是本申请实施例提供的一种镜像获取方法的流程图;
图9是本申请实施例提供的一种资源下载方法的流程图;
图10是本申请实施例提供的一种下载资源的示意图;
图11是相关技术中流媒体p2p网络的网络拓扑示意图;
图12是本申请实施例提供的一种p2p网络的网络拓扑示意图;
图13是本申请实施例提供的一种资源下载方法的流程图;
图14是本申请实施例提供的一种优先级规则的示意图;
图15是本申请实施例提供的一种资源获取装置的结构示意图;
图16是本申请实施例提供的一种资源分发装置的结构示意图;
图17是本申请实施例提供的一种资源下载装置的结构示意图;
图18是本申请实施例提供的一种资源下载装置的结构示意图;
图19是本申请实施例提供的一种资源下载装置的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
以下对本申请实施例涉及的一些技术术语进行解释:
加密:是指采用加密算法,对明文(plaintext)和密钥进行计算后,得到密文(ciphertext)的过程。通过加密技术,需要传输的原始数据可以从明文转换为密文,以密文的形式在网络中传输,从而保证数据的安全。
解密:为加密的逆运算,是指采用加密算法,对密钥和密文进行计算后,得到明文的过程。
密钥(cipher):为使用加密算法时会输入的参数,同一个明文在同一种加密算法下,使用不同的密钥会产生不同的密文,密钥为决定密文的安全性的重要参数。
网络分层:开放系统互连(opensysteminterconnection,以下简称:osi)模型共分七层,自下至上分别为:物理层(physicallayer)、数据链路层(datalinklayer)、网络层(networklayer)、传输层(transportlayer)、会话层(sessionlayer)、表示层(presentationlayer)和应用层(applicationlayer)。在实际应用中,网络架构通常简化为五层,自下至上分别为:物理层、数据链路层、网络层、传输层和应用层。通过网络的层次化设计,每个网元需要完成的收发数据、封装以及解封装等任务,可以由网元中不同的硬件以及软件去完成,例如,需要在数据链路层完成的任务,可以由网元中的网卡、蓝牙执行,应用层所需完成的任务,可以由网元中运行的客户端、进程等执行,从而简化了不同网元之间信息交互的过程。
链路加密:当应用加密技术对网络层以下的数据加密,如对数据链路层传输的数据加密时,加密技术称为链路加密。采用链路加密的方式,可以看作在发送方和接收方之间,架设了一条加密通道,发送方和接收方在这条加密通道之间传输的各种消息,都会以密文的形式传输。具体来说,发送方在发送各种消息前,均会使用密钥,应用加密算法对数据加密,然后将数据发送给接收方,接收方接收到各种消息后,均会使用密钥,应用解密算法对数据解密,然后得到明文,如此,第三方即使截获了这条加密通道上的消息,由于没有密钥,无法将密文恢复为明文,从而保证数据传输的机密性。
其中,按照加密和解密使用的密钥是否相同,加密算法和解密算法分为两类:对称加密算法以及非对称加密算法。对称加密算法,是指数据加密和解密时,使用相同的密钥。非对称加密算法,是指数据加密和解密时,使用不同的密钥。具体地,加密使用的密钥和解密使用的密钥为两个密钥,组成了一个密钥对,密钥对中,一个密钥可以公开,称为公钥,一个密钥由用户秘密保存,称为私钥。使用公钥加密的数据,只能使用对应的私钥才能解密,相应地,使用私钥加密的数据,只能使用对应的公钥才能解密。
节点加密:当应用加密技术,对传输层的数据加密时,加密技术称为节点加密。
端对端加密:当应用加密技术对网络层以上的数据加密,如对应用层传输的数据加密时,加密技术称为端到端加密,端到端加密的执行主体通常为应用层的软件模块,因此可以通过软件实现。
数字签名:即digitalsignature,可以为数字、字母或其他字符的组合,由数据的发送方产生。第三方无法伪造数字签名,因此能够验证数据确实来自于发送方。关于通过数字签名进行校验的流程,发送方和接收方会预先约定同一哈希函数,发送方在发送数据包时,可以采用哈希函数,获取数据包的摘要数据,使用私钥,对摘要数据加密,将加密后的摘要数据作为数据包的数字签名,将数字签名和数据一起发送给接收方,接收方在接收到数据包时,可以采用哈希函数,获取数据包的摘要数据,使用公钥对数字签名解密,得到另一个摘要数据,如果这两个摘要数据相同,第一,可以确定数据包来自于发送方,因为第三方在没有发送方的私钥的情况下,就无法使用私钥,伪造出发送方的数字签名。第二,确定数据包在传输过程中未被篡改,也没有损失数据。因为哈希函数的特性为,只要数据包中的任一位发生改变,则通过哈希函数,计算的数据包的摘要数据就会发生变化,因此如果数据包在传输过程中,摘要数据未发生变化,可以确定数据包的内容未被篡改,且数据包被完整传输。
数字证书:用于验证公钥的真实性,数字证书是一个包含公钥以及公钥的拥有者的信息的文件。数字证书可以由证书授权(certificateauthority,以下简称:ca)中心或企业系统中自定义的可信机构产生。
tracker节点:p2p网络中用于维护各个下载者的信息的节点,每个peer节点会定期向tracker节点上报正在下载的资源以及自己的ip地址和端口号,tracker节点会存储当前下载各个资源的所有peer节点的ip地址和端口号,以便将资源的所有下载者返回给peer节点。
镜像(mirror):一种文件存储形式,可以看作原始文件的副本。
镜像层(mirrorlayer):镜像通常以分层的结构方式进行存储,每层对应的镜像结构即为镜像层。
docker:是一个开源的容器引擎,开发者可以通过docker,将应用程序以及引用程序的运行环境打包为docker镜像,并存储在docker镜像站中,当用户需要使用应用程序时,可以通过从docker镜像站,下载镜像,以创建一个可运行应用程序的docker容器。
dockerdeamon:是一个在宿主机中运行的守护进程。在docker的系统架构中,docker客户端可以根据用户的输入操作,触发各种指令,通过各种指令与dockerdeamon交互,dockerdeamon可以接收docker客户端的指令,根据docker客户端的指令,创建对应的作业,并执行对应的作业。
docker镜像(dockerimage):是一种用于启动docker容器的文件系统,其中包含了应用以及应用所需要的依赖的二进制和库文件。
docker容器(dockercontainer):是docker镜像运行时的实体。容器可以被创建、启动、停止、删除、暂停等。
docker镜像站(dockerregistry):docker镜像站用于存储及分发docker镜像。镜像会以多个镜像层,及一个镜像描述信息的形式存储在docker镜像站。
树形网络:为一种网络拓扑形状,树形网络中所有的节点都被组织在一棵树中,树形网络包括根节点和叶子节点。目前的p2p流媒体网络通常采用树形网络构建,在该树形网络中,资源会沿着树枝单向流动,即,只能从根节点流向叶子节点,而无法从叶子节点流向根节点。
网状网络:为一种网络拓扑形状,这种结构中,所有的节点无规则地互连,没有绝对的父子关系,即节点a可以将资源流向节点b,节点b也可以将资源流向节点a。
公有云租户隔离(publiccloudmultitenanttechnology):共用的数据中心内以单一系统架构与服务提供多数客户端相同甚至可定制化的服务,并且仍然可以保障客户的数据隔离。
云计算服务:是指使用互联网接入远程服务器,从而通过远程服务器管理资源、处理数据的服务。云计算服务通常划分为三个层次,从下往上分别为:基础设施即服务(infrastructureasaservice,以下简称:iaas)、平台即服务(platform-as-a-service,以下简称:paas)、软件即服务(software-as-a-service,以下简称:saas)。
iaas:是指云计算服务提供的基础设施,可以包括处理设备、存储设备、网络设备以及其他的处理资源,用户能够远程地部署、运行和控制云计算服务中的任一基础设施,以享受云计算服务。iaas可以为大规模的高性能物理服务器集群、大规模的存储阵列以及高带宽的网络结构,可以组成一个或多个数据中心。
公有云:是指为大众用户建立,无需投入成本以布设基础设施,而是可以按需出售或免费的云计算服务,通常由云计算服务的提供方建设。采用公有云技术,云计算服务的提供方可以建设大规模的云基础设施,并通过虚拟化技术,将云基础设施映射为大量的虚拟机,向企业提供虚拟机,则企业无需自身建设基础设施,通过租用虚拟机并按需付费,即可享受云计算服务的计算资源。
租户:是指入驻公有云的用户,即使用公有云的计算资源的用户。
租户隔离:是指不同租户的资源相互隔离。例如,当租户a下载资源时,只能下载到属于自己的资源,而无法下载到属于租户b的资源,则可以称,云计算服务对租户a和租户b,实现了租户隔离。
私有云:是指为指定的用户或机构建立,需要投入成本以布设基础设施的云计算服务。
配置管理数据库(configurationmanagementdatabase,以下简称:cmdb):用于存储与管理系统中各个设备的各种配置信息的数据库。
以下对本申请实施例的应用场景进行示例性描述:
在一个示例性应用场景中,请参见图1,本申请实施例可以应用在docker机下载镜像的场景中。具体来说,用户可以在docker客户端上,输入dockerpull指令,指示向docker机下载某一名称的镜像,docker客户端可以解析dockerpull指令,向docker机中的dockerdeamon发送下载镜像的请求,dockerdeamon可以从docker镜像站,获取镜像的manifest文件,解析manifest文件,得到镜像中每个镜像层的摘要数据,针对每个镜像层,根据镜像层的摘要数据,判断本地是否已经下载或正在下载该镜像层,如果没有,则标识该镜像层正在下载,并生成下载该镜像层的请求,而此时,peer客户端会拦截dockerdeamon的获取镜像层的请求,持token去tracker节点,获取镜像层的种子文件,从种子文件中,得到镜像层对应的密钥对,以及拥有该镜像层的peer节点的网络互连协议(internetprotocol,以下简称:ip)地址列表,从ip地址列表中选择一个或多个ip地址,将这一个或多个ip地址指向的节点作为自身的peer节点,通过镜像层的密钥对,与peer节点建立加密链路,通过加密链路,从peer节点下载镜像层压缩包,将镜像层压缩包发送给dockerdeamon,dockerdeamon会解压镜像层压缩包,存储镜像层的json信息以及镜像层的内容信息,最终得到镜像,将镜像注册并保存在本地的镜像graph中。
在此基础上,在另一个示例性应用场景中,可以集群化、分布式地部署大量docker机,向大量docker机分发镜像,从而对镜像批量化地分发和部署。
请参见图2,结合p2p网络的架构,可以将大量docker机部署为大量peer节点,并部署主镜像站、多个子镜像站以及多个tracker节点。主镜像站也称中心镜像站(center-registry),主镜像站用于向每个子镜像站(local-registry)提供镜像层。子镜像站也称本地镜像站,用于向每个peer节点提供镜像层,每个地域可以部署一个或多个子镜像站。peer节点中可以安装和运行peer客户端以及docker客户端,本申请实施例提供的业务逻辑可以封装于peer客户端中,通过本申请实施例提供的peer客户端,当用户使用docker客户端,从镜像站下载镜像层时,使用docker客户端中原生的dockerpull命令,就能够使用p2p的镜像层下载功能。在图2中,描述了docker-client从peer获取镜像层的两种路径,路径1为传统的方式,即从镜像站中下载镜像层。路径2为p2p的方式,为通过tracker节点,获取到拥有镜像层的其他peer,并从其他的peer中获取镜像层。
上文结合图2,描述了本申请实施例应用于分发镜像的业务时,实施环境的基础构成,而在一种可能的实现中,本申请实施例可以提供为一种p2p网络中通用的资源分发系统,基于本申请实施例提供的资源分发系统,可以分发各种各样的资源,包括而不限于镜像层、流媒体数据、账单数据、文件、日志数据等,以下结合图3具体描述。
图3为本申请实施例提供的一种实施环境的示意图,该实施环境包括多个第一节点101、多个第二节点102、跟踪节点103以及认证节点104,多个第一节点101、多个第二节点102、跟踪节点103可以组成一个p2p网络。
第一节点101:是指接收目标资源的peer节点,可以为p2p网络中的任一peer节点,例如可以为图2中的节点设备。第一节点101可以为物理上的节点,例如可以为一个主机,该主机可以为计算机设备、服务器、个人电脑、笔记本电脑、移动终端等。另外,第一节点101也可以为逻辑上的节点,例如可以为虚拟机、运行态的容器等,本实施例对第一节点101的实际形态不做限定。
第二节点102:是指发送目标资源的peer节点,可以为p2p网络中的任一peer节点,例如可以为图2中的节点设备。第二节点102可以为物理上的节点,例如可以为一个主机,该主机可以为计算机设备、服务器、个人电脑、笔记本电脑、移动终端等。另外,第二节点102也可以为逻辑上的节点,例如可以为虚拟机、运行态的容器等,本实施例对第一节点101的实际形态不做限定。
跟踪节点103:即tracker节点,例如可以为图2中的“p2p-tracker”节点,跟踪节点103能够确定每个资源对应的密钥对,向每个peer节点分发资源对应的密钥对,或者能够确定每个资源对应的数字证书,向每个peer节点分发资源对应的数字证书,跟踪节点103可以记录每个peer节点的ip地址和端口号。跟踪节点103可以与每个第一节点101、每个第二节点102分别建立网络连接,跟踪节点103可以为计算机设备、服务器、个人电脑等。
认证节点104:即auth节点,认证节点104能够确定每个peer节点上登录的用户标识对各个资源具有的权限,从而认证每个peer节点对资源的权限,能够根据每个peer节点对资源的权限,向对应的peer节点发送令牌数据。认证节点104可以与每个第一节点101、每个第二节点102分别建立网络连接,认证节点104可以为计算机设备、服务器、个人电脑等。举例来说,认证节点104可以为dockerauth节点。
结合分发镜像的业务场景,请参见图4,图4为本申请实施例提供的一种基于p2p网络分发docker镜像的系统架构图,该系统架构中包括多个peer节点、dockerregistry、tracker节点、dockerdeamon、dockerauth、docker客户端以及proxy,该多个peer节点可以提供为上述实施环境中的第一节点以及第二节点,tracker节点即为上述实施环境中的跟踪节点103,可以向多个peer节点分发资源的密钥对,dockerregistry即为镜像站,可以将大量的镜像层存储为peer节点所需的资源,proxy可以为bt客户端,可以代理dockerdeamon下载镜像。
图5是本申请实施例提供的一种计算机设备的结构示意图,该计算机设备500可以提供为第一节点、第二节点或跟踪节点,该计算机设备500可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上处理器(centralprocessingunits,以下简称:cpu)501和一个或一个以上的存储器502,其中,存储器502中存储有至少一条指令,至少一条指令由处理器501加载并执行以实现下述各个方法实施例中第一节点执行的方法、第二节点执行的方法或跟踪节点执行的方法。当然,该计算机设备还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该计算机设备500还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括指令的存储器,上述指令可由计算机设备中的处理器执行以完成下述实施例中第一节点执行的方法、第二节点执行的方法或跟踪节点执行的方法。例如,计算机可读存储介质可以是只读存储器(read-onlymemory,以下简称:rom)、随机存取存储器(randomaccessmemory,以下简称:ram)、cd-rom、磁带、软盘和光数据存储设备等。
图6是本申请实施例提供的一种资源获取方法的流程图,该方法的交互主体包括第一节点、第二节点、跟踪节点以及认证节点,如图6所示,该方法包括:
601、当第一节点接收到对目标资源的获取指令时,向认证节点发送认证请求。
为了对p2p网络中不同的peer节点区分描述,本实施例中,将接收目标资源的peer节点称为第一节点,将发送目标资源的peer节点称为第二节点,第一节点、第二节点可以为p2p网络中的任意peer节点。
目标资源:是指将需要获取的资源,目标资源的类型可以根据实际业务确定。举例来说,应用在分发镜像的场景,目标资源可以为镜像层,例如可以为docker镜像中的一个镜像层,另外,目标资源还可以为文件、图片、音频、视频、交易数据、日志数据等,本实施例对资源的类型不作限定。
获取指令:其功能在于,指示第一节点获取目标资源,当第一节点接收到获取指令后,可以确定要从p2p中的对等节点,获取目标资源。获取指令可以由用户的输入操作触发。其中,用户可以在第一节点上触发输入操作,第一节点检测输入操作,从而接收到获取指令。另外,用户也可以在与远程设备上触发输入操作,远程设备检测到输入操作后,可以通过网络连接,向第一节点发送获取指令,则第一节点可以接收到获取指令。关于获取指令的内容,获取指令可以携带目标资源的标识,该目标资源的标识可以为目标资源的名称。举例来说,获取指令可以为dockerpull指令,dockerpull指令可以携带镜像层的名称。
认证请求:用于对第一节点上登录的用户标识的权限进行认证,可以携带第一节点上登录的用户标识以及目标资源的标识,以便认证节点根据用户标识以及目标资源的标识,认证第一节点的用户对目标资源具有的权限。本实施例中,当第一节点接收到获取指令后,即会生成认证请求,向认证节点发送认证请求,以便从认证节点,获取登录用户对应的令牌数据。
在一个示例性场景中,以分发镜像的场景为例,目标资源可以为镜像层,认证节点可以为dockerauth,获取指令可以为dockerpull指令,第一节点中运行有dockerdeamon,则本步骤601具体可以为:dockerclient接收dockerpull指令,请求dockerdeamon,dockerdeamon接收到dockerclient的请求后,去dockerauth,获取登录用户对应的资源权限token。
602、认证节点接收认证请求,生成令牌数据,向第一节点发送令牌数据。
令牌数据:即token,令牌数据可以看作认证节点为第一节点颁发的令牌,令牌数据用于指示第一节点对目标资源具有的各种权限,以便第一节点持令牌数据,向其他节点请求目标资源时,其他节点能够根据令牌数据,验证第一节点是否具有获取目标资源的权限,从而确定是否要将目标资源返回给第一节点。
本实施例中,以第一节点有权获取资源为例进行描述,令牌数据可以指示第一节点具有获取目标资源的权限,则后续第一节点持令牌数据,向其他节点请求目标资源时,其他节点能够根据令牌数据,验证第一节点具有获取目标资源的权限,将目标资源返回给第一节点。
关于令牌数据的内容,令牌数据可以包括至少一种权限标识,权限标识用于标识对应的权限,可以为权限的名称,例如,权限标识可以为pull,以标识第一节点具有获取目标资源的权限,例如,权限标识可以为push,以标识第一节点具有推送目标资源的权限,如此,令牌数据能够指示第一节点对目标资源具有的至少一种权限,至少一种权限包括获取目标资源的权限。
可选地,令牌数据还可以包括目标资源的名称,通过在令牌数据携带目标资源的名称,接收该令牌数据的任意节点,能够根据令牌数据携带的目标资源的名称,确定令牌数据对应于目标资源。在一种可能的实现中,令牌数据可以设置resource字段,resource字段的取值为资源的名称。另外,令牌数据还可以包括数字签名,通过在令牌数据中携带数字签名,接收该令牌数据的任意节点,能够通过校验令牌数据携带的数字签名,确认令牌数据在传输过程中未被篡改。针对生成令牌数据中数字签名的过程,可以对令牌数据的数据部分提取摘要信息后,使用私钥,对摘要信息加密,得到数字签名。在一种可能的实现中,令牌数据可以设置sign字段,sign字段的取值为令牌数据的数字签名。
示例性地,请参见图7,图7为本申请实施例提供的一种令牌数据的示意图,令牌数据中resource字段的取值为“domain/namespace/repo”,access字段的取值为“pull"和“push”,"pull"的含义为:第一节点对名称为“domain/namespace/repo”的资源,具有获取的权限,"push"的含义为:第一节点对名称为“domain/namespace/repo”的资源,具有发送的权限。
关于生成令牌数据的过程,认证节点可以根据认证请求,认证第一节点上登录的用户标识的权限,根据认证的结果,生成令牌数据。具体来说,认证节点可以预先确定p2p网络中的各个节点对各个资源的权限,当认证节点接收到认证请求后,可以解析认证请求,得到第一节点上登录的用户标识以及目标资源的标识,根据该用户标识以及目标资源的标识,确定第一节点对目标资源具有的权限。
在一种可能的实现方式中,认证节点可以存储用户标识、资源标识与权限标识之间的映射关系,该映射关系中包括用户标识、资源标识以及权限标识,认证节点可以根据第一节点上登录的用户标识以及目标资源的标识,查询映射关系,从映射关系中得到与该用户标识以及目标资源的标识均对应的权限标识,得到至少一个权限标识,根据该至少一个权限标识生成令牌数据。
603、第一节点接收认证节点的令牌数据,向跟踪节点发送对种子文件的获取请求,该获取请求携带令牌数据。
对种子文件的获取请求:用于请求跟踪节点发送种子文件,以使跟踪节点在种子文件中携带目标资源对应的密钥对,将种子文件返回给第一节点。本实施例中,第一节点发送的对种子文件的获取请求会携带令牌数据,因此,第一节点发送对种子文件的获取请求的过程,可以看作:第一节点持认证节点给的令牌数据,去跟踪节点,获取种子文件。
针对发送对种子文件的获取请求的过程,第一节点可以基于第一节点与跟踪节点之间的通信协议,生成对种子文件的获取请求,在对种子文件的获取请求中携带令牌数据。在一种可能的实现中,第一节点与跟踪节点之间的通信协议可以为基于安全套接层的超文本传输协议(hypertexttransferprotocoloversecuresocketlayer,以下简称:https)协议,则第一节点可以基于https协议,生成https的get请求,在https的get请求中携带令牌数据,向跟踪节点发送https的get请求。
可选地,应用于分发镜像的场景中,第一节点接收到令牌数据后,可以根据令牌数据,从镜像站中获取元数据文件(即manifest文件),解析该元数据文件,得到元数据文件中携带的镜像层的标识,从而确定需要获取的镜像层,将需要获取的镜像层作为目标资源。
可选地,第一节点中可以包括守护进程和代理进程,上述各个步骤可以由守护进程与代理进程分别执行。其中,守护进程可以为处理资源的客户端中的进程,守护进程可以与认证节点交互,上述向认证节点发送认证请求、接收令牌数据的过程可以由守护进程执行。代理进程可以称为守护进程的proxy,能够代替守护进程,执行获取资源的任务,代理进程可以和跟踪节点交互。那么,当守护进程生成对目标资源的获取请求时,代理进程可以拦截该对目标资源的获取请求,生成对种子文件的获取请求,向跟踪节点发送对种子文件的获取请求。
举例来说,应用于分发镜像的场景中,守护进程可以为dockerdeamon进程,代理进程可以为proxy进程,第一节点可以运行dockerdeamon进程和proxy进程,当dockerdeamon生成对镜像层的获取请求,准备向镜像站发送对镜像层的获取请求时,proxy进程可以拦截dockerdeamon进程的请求,并持token,向tracker节点发送对种子文件的获取请求,以便从tracker获取镜像层对应的种子文件。
604、跟踪节点接收对种子文件的获取请求,对获取请求携带的令牌数据校验,向第一节点发送种子文件。
具体来说,跟踪节点可以解析令牌数据,确定第一节点对目标资源具有的至少一种权限,从而判断第一节点是否具有获取目标资源的权限,当确定第一节点具有获取目标资源的权限时,则跟踪节点会根据目标资源对应的密钥对,生成目标资源对应的种子文件,并向第一节点发送种子文件,而当跟踪节点确定第一节点不具有获取目标资源的权限时,则无需生成目标资源的种子文件,可以拒绝第一节点的请求,另外还可以向第一节点发送失败通知。
在一种可能的实现中,结合令牌数据的内容,跟踪节点可以确定令牌数据携带的至少一种权限标识,判断该至少一种权限标识是否具有获取目标权限的标识,当该至少一种权限标识具有获取目标权限的标识时,可以确定第一节点具有获取目标资源的权限。
种子文件:即bt种子,用于向p2p网络中的每个peer节点提供资源相关的信息,例如提供下载资源的peer节点的ip地址和端口号。种子文件的后缀名可以为.torrent。种子文件也称元信息文件或metafile。种子文件可以通过becoding编码方式编码,可以看作becoding编码的字典数据。
针对种子文件的内容,本实施例中,种子文件可以携带目标资源对应的密钥对,详见以下实现方式一,另外,种子文件也可以携带目标资源对应的数字证书,详见以下实现方式二。
实现方式一、跟踪节点可以确定令牌数据携带的目标资源的标识,根据该目标资源的标识,确定第一节点需要获取目标资源,则获取目标资源对应的密钥对,在种子文件中携带目标资源对应的密钥对,以便第一节点使用该目标资源对应的密钥对,对目标资源相关的数据包加密和/或解密。
针对确定目标资源对应的密钥对的过程,跟踪节点可以预先存储p2p网络中每个资源对应的密钥对,因此可以根据预先的存储,确定目标资源的密钥对。在一种可能的实现中,跟踪节点可以存储资源标识与密钥对之间的映射关系,该映射关系包括至少一个资源标识以及对应的至少一个密钥对,当跟踪节点接收到对种子文件的获取请求时,可以根据目标资源的标识,查询该映射关系,从映射关系中得到目标资源对应的密钥对。
关于资源对应的密钥对的生成方式,在一种可能的实现中,可以通过非对称加密算法(asymmetriccryptographicalgorithm),为p2p网络中传输的每个资源,生成对应的密钥对。其中,该非对称加密算法包括而不限于rsa算法、elgamal算法、diffie—hellman算法等,该非对称加密算法可以为ssl协议以及https协议支持的任一种加密算法。
实现方式二、跟踪节点可以确定令牌数据携带的目标资源的标识,根据该目标资源的标识,确定第一节点需要获取目标资源,则获取目标资源对应的数字证书,在种子文件中携带目标资源对应的数字证书,以便第一节点使用该数字证书,生成目标资源对应的密钥对,从而使用目标资源对应的密钥对,对目标资源相关的数据包加密和/或解密。其中,该目标资源的标识可以为目标资源的名称。
针对确定目标资源对应的数字证书的过程,跟踪节点可以预先存储p2p网络中每个资源对应的数字证书,因此可以根据预先的存储,确定目标资源的数字证书。在一种可能的实现中,跟踪节点可以存储资源标识与数字证书之间的映射关系,该映射关系包括至少一个资源标识以及对应的至少一个数字证书,当跟踪节点接收到对种子文件的获取请求时,可以根据目标资源的标识,查询该映射关系,从映射关系中得到目标资源对应的数字证书。
另外,种子文件还可以根据需求包括其他内容,例如,种子文件还可以包括资源中每个资源片段(piece)的哈希值,资源片段的哈希值用于校验资源片段的正确性和完整性,可以为sha1值。针对资源片段的哈希值,可以采用sha1算法,对资源片段计算,生成20字节的sha1值。又如,种子文件还可以包括对等节点信息,该对等节点信息用于指示拥有该目标资源的peer节点,可以为第一次拥有该目标资源的peer节点的ip列表。
需要说明的是,本实施例中,密钥对可以对目标资源唯一可用,即,密钥对唯一对应于目标资源,目标资源对应的密钥对中的私钥,仅能对加密了的目标资源解密,而无法其他加密了的资源解密,因此,即使密钥对被破解,也无法使用该密钥对,对目标资源以外的其他资源解密,也就不会影响到p2p网络中其他资源的安全传输。进一步地,p2p网络中传输的每个资源均可以具有唯一对应的密钥对,各个资源之间的密钥对互不相同,从而极大地提升p2p网络中传输资源的安全性。
在一种可能的设计中,第一节点可以存储资源的标识与密钥对之间的映射关系,当第一节点得到目标资源对应的密钥对后,可以向该映射关系添加目标资源的标识以及密钥对,从而对应地存储目标资源与密钥对,依次类推,可以对应地存储每个所需下载的资源与每个密钥对,则每当需要下载任一资源时,可以通过查询该映射关系,得到该资源对应的密钥对,使用该资源对应的密钥对,对资源相关的数据包加密和/或解密,如此,在传输p2p不同资源时,通过使用不同的密钥对,保证各个资源在传输时可以实现相互隔离。
在一个示例性应用场景中,以在公有云中分发docker镜像为例,每个docker镜像层均可以具有唯一对应的密钥对,例如镜像层1对应密钥对1,镜像层2对应密钥对2,镜像层3对应密钥对3,这3个镜像层的密钥对均不同,如此,可以保证每个peer节点仅能获取到自身有权获取的镜像层,而无法获取到自身无权获取的镜像层,从而极大地提升了公有云中分发镜像的安全性,实现租户隔离。
605、第一节点接收种子文件,根据该种子文件,确定目标资源对应的密钥对。
结合上述实现方式一,第一节点可以解析种子文件,得到种子文件携带的密钥对。结合上述实现方式二,第一节点可以得到数字证书,根据数字证书,生成密钥对。
需要说明的是,上述仅是以跟踪节点向第一节点发送密钥对为例进行描述,同理地,跟踪节点可以向p2p网络中目标资源相关的每个peer节点,分发密钥对。例如,跟踪节点可以向每个请求下载目标资源的peer节点,分发密钥对,又如,跟踪节点可以向每个正在下载或已经下载了目标资源的peer节点,分发密钥对,则通过分发密钥对的过程,p2p网络中目标资源相关的所有peer节点,均会持有目标资源的密钥对,以使各个peer节点之间,会使用该密钥对,对目标资源加密。
与上述第一节点确定目标资源的密钥对的过程同理,第二节点可以通过同样的方式,确定目标资源对应的密钥对,并从p2p网络中的其他peer节点下载目标资源,则第一节点与第二节点均得到了目标资源对应的密钥对,而第一节点需要获取目标资源,第二节点持有目标资源,第一节点与第二节点可以使用密钥对加密通信,从而传输目标资源。
606、第一节点向第二节点发送令牌数据。
第一节点可以从跟踪节点,获取对等节点信息,该对等节点信息中包括至少一个对等节点的ip地址,第一节点可以从至少一个ip地址中选择ip地址,将该ip地址对应的peer节点作为第二节点,第一节点可以与第二节点建立网络连接,并通过该网络连接,向第二节点发送令牌数据,以便第二节点根据令牌数据,校验第一节点对目标资源具有的权限。
关于发送令牌数据的方式,在一种可能的实现中,第一节点与第二节点可以基于传输控制协议(transmissioncontrolprotocol,以下简称:tcp),进行tcp协议的三次握手通信,从而建立tcp长连接,在该tcp长连接中,第一节点与第二节点可以基于p2p协议,进行两次握手通信,在两次握手通信的过程中,发送令牌数据。具体地,第一节点可以生成p2p握手请求,向第二节点发送p2p握手请求,p2p握手请求携带令牌数据,以便在与第二节点进行p2p握手时,完成对权限的校验。其中,p2p握手请求中可以包括保留字段,可以在保留字段上承载令牌数据。
在一种可能的设计中,令牌数据的传输可以结合数字签名的机制。以携带了令牌数据以及数字签名的数据包描述为第三数据包为例,第一节点可以使用私钥,为令牌数据添加数字签名,得到第三数据包,并发送第三数据包。具体来说,第一节点可以采用哈希算法,获取令牌数据的摘要数据,使用目标资源对应的密钥对中的私钥,对摘要数据加密,得到数字签名,对令牌数据和摘要数据封装,得到第三数据包,则该第三数据包会携带令牌数据以及第一节点的数字签名,以便第二节点能够根据数字签名,验证令牌数据在传输过程中未被篡改以及令牌数据的完整性。
关于确定第二节点的过程,第一节点可以从跟踪节点,获取对等节点信息,该对等节点信息包括p2p网络中下载该目标资源的对等节点的ip地址。第一节点可以解析对等节点信息,得到一个或多个ip地址,从该一个或多个ip地址中选择ip地址,将选择的ip地址对应的节点作为第二节点,向该第二节点发送令牌数据。
607、第二节点接收令牌数据,根据令牌数据,确定第一节点具有获取目标资源的权限。
关于对令牌数据校验的过程,第二节点可以解析第一节点的令牌数据,根据令牌数据,判断第一节点是否具有获取目标资源的权限,当确定第一节点具有获取目标资源的权限时,则第二节点后续会响应第一节点对目标资源的获取请求,当确定第一节点不具有获取目标资源的权限时,则第二节点可以向第一节点返回错误信息,并中断与第一节点之间的连接。
具体地,在一种可能的实现中,令牌数据中可以通过权限标识,指示第一节点对目标资源具有的权限,则第二节点解析令牌数据后,可以得到令牌数据携带的至少一种权限标识,根据该至少一种权限标识,判断该至少一种权限标识中是否包括获取目标资源的权限的标识,从而确定第一节点是否具有获取目标资源的权限。另外,第二节点可以根据令牌数据携带的目标资源的标识,确定第一节点需要获取的目标资源。
举例来说,请参见图7,假设第一节点的令牌数据如图7所示,第二节点解析resource字段,可以得到“domain/namespace/repo”,则确定第一节点请求获取名称为“domain/namespace/repo”的资源,解析access字段,可以得到“pull”和“push”,则确定第一节点对名称为“domain/namespace/repo”的资源,具有获取的权限和发送的权限,也即是,第一节点的令牌数据中,指明了第一节点具有获取“domain/namespace/repo”对应的资源的权限,则第二节点对第一节点的身份校验通过,后续第二节点会将“domain/namespace/repo”对应的资源发送给第一节点。
在一种可能的设计中,结合数字签名的机制,第二节点可以接收第三数据包,解析第三数据包,得到第三数据包携带的令牌数据以及数字签名,使用公钥,对数字签名解密,若解密成功,可以得到将数字签名转化为令牌数据的摘要数据,则可以确定令牌数据确实来自于第一节点,并且,可以采用哈希算法,获取令牌数据的哈希值,当哈希算法得到的哈希值与解密得到的摘要数据一致时,可以确定令牌数据在传输过程中未被篡改,且令牌数据是完整的,未发生信息损失。
608、第一节点向第二节点发送对目标资源的获取请求。
对目标资源的获取请求:即为目标资源对应的request消息。结合p2p网络中对资源分片传输的机制,对目标资源的获取请求,具体可以为对目标资源中的一个或多个资源片段的获取请求。对目标资源的获取请求可以携带资源片段的标识、请求第二节点发送的数据的长度等。结合分发镜像的场景,对目标资源的获取请求可以为对镜像层的请求。
需要说明的是,本实施例中,第一节点与第二节点之间,可以通过链路加密的方式,传输目标资源。具体地,可以看作为目标资源,在第一节点与第二节点之间架设了一条加密通道,在这条加密通道之间传输的任意数据包,都会使用密钥对加密。也即是,第一节点与第二节点之间传输各种通信消息时,均可以使用密钥对,对通信消息加密和/或解密,一方面,当传输携带了目标资源的内容的数据包时,例如携带了资源片段的数据包时,该携带目标资源的内容的数据包会在这条加密通道以密文的形式传输,另一方面,当传输没有携带目标资源的内容的数据包,例如控制面的信令、建立连接时的握手消息、保持连接的心跳消息时,这些数据包也会在这条加密通道以密文的形式传输。
结合链路加密的方式,在一种可能的设计中,对目标资源的获取请求可以通过密钥对加密传输。以对目标资源的获取请求加密后,产生的数据包描述为第二数据包为例,第一节点生成对目标资源的获取请求后,可以使用公钥,对获取请求加密,得到第二数据包,向第二节点发送第二数据包。如此,由于第二数据包为密文,即使第二数据包被截获,如果没有目标资源的密钥对,则无法破解获取请求的内容,保证目标资源的相关消息得以安全传输。
针对链路加密的具体实现,在一种可能的实现方式中,第一节点与第二节点可以支持ssl协议,将ssl协议中用于传输数据包的密钥对,设置为目标资源对应的密钥对,则第一节点与第二节点基于ssl协议通信时,第一节点与第二节点之间传输的各种消息均会使用密钥对加密。具体来讲,第一节点与第二节点中可以包括通信单元,该通信单元可以包括网卡和蓝牙,该通信单元用于在数据链路层通信,第一节点与第二节点可以分别向各自的通信单元的驱动程序中,写入目标资源对应的密钥对,则第一节点与第二节点控制各自的通信单元,在数据链路层通信时,数据链路层传输的各种数据包均会使用密钥对加密。
需要说明的是,上述仅是以通过链路加密的方式,使用密钥对,对目标资源加密进行举例描述,在一种可能的实现中,第一节点与第二节点之间,也可以通过其他方式,对目标资源加密,例如可以采用节点加密、端到端加密等方式,对目标资源加密,本实施例对使用密钥对,对目标资源加密的具体方式不做限定。
609、第二节点接收对目标资源的获取请求,使用密钥对中的公钥,对目标资源的资源片段加密后,得到第一数据包,向第一节点发送第一数据包。
具体来说,第二节点可以解析对目标资源的获取请求,得到获取请求携带的资源片段的标识,根据该资源片段的标识,可以获知第一节点请求目标资源的资源片段,会确定目标资源对应的密钥对,使用密钥对中的公钥,对目标资源的资源片段加密后,得到第一数据包。其中,该第一数据包为密文,该第一数据包中可以携带目标资源的完整的资源片段,也可以携带资源片段的一部分,例如携带资源片段的一个或多个slice。
在一种可能的设计中,结合上述链路加密的方式,第二节点接收到的对目标资源的获取请求,具体可以为密文形式的第二数据包,第二节点可以使用密钥对中的私钥,对第二数据包解密,得到目标资源的获取请求。
610、第一节点接收第一数据包,使用密钥对中的私钥,对第一数据包解密,得到目标资源的资源片段。
具体来说,第一节点接收到第一数据包后,可以确定目标资源对应的密钥对中的私钥,使用私钥,采用解密算法,得到第一数据包解密,得到第一数据包中携带的资源片段。其中,该解密算法可以为任一种非对称加密算法中的解密算法。
需要说明的第一点是,上文仅是以第一节点从p2p网络中的一个第二节点,得到资源片段的过程为例进行描述,同理地,第一节点可以从p2p网络中的多个第二节点,得到目标资源的多个资源片段。其中,由于密钥对与目标资源对应,则第一节点与每个第二节点针对目标资源进行通信时,均会使用该密钥对加密和/或解密。依次类推,本申请实施例提供的p2p网络中,传输目标资源的每条链路中,均可以使用密钥对链路加密。
需要说明的第二点是,第一节点在从第二节点获取其他资源时,第二节点可以使用其他资源对应的密钥对,对其他资源加密,相应的,第一节点接收到其他资源时,可以使用其他资源对应的密钥对,对其他资源解密。
在一种可能的实现中,p2p网络中每个peer节点可以存储资源的标识与密钥对之间的映射关系,该映射关系中包括一个或多个资源的标识以及对应的一个或多个密钥对,从而对应存储资源与密钥对。那么,每当任一个peer节点请求任一资源时,可以查询该映射关系,得到资源对应的密钥对,使用该密钥对,与其他peer节点建立加密链路,同理地,每当任一个peer节点要发送任一资源时,可以查询该映射关系,得到资源对应的密钥对,使用该密钥对,对其他peer节点请求的资源解密。
611、第一节点根据一个或多个资源片段,确定目标资源。
目标资源可以划分为一个或多个资源片段,对于目标资源中的每个资源片段,第一节点均可以采用上述步骤,从第二节点获取资源片段,则当得到目标资源中的所有资源片段后,第一节点可以按照所有资源片段在目标资源中的排列顺序,对所有资源片段排序,拼接得到目标资源。
综上所述,以应用在分发docker镜像的业务为例,请参见图8,图8为本申请实施例提供的一种获取docker镜像的方法的流程图,该方法包括以下步骤1至步骤5:
步骤1、dockerdeamon从dockerauth获取token,token指示登录用户对镜像层具有的权限。
步骤2、dockerdeamon持token,从dockerregistry获取manifest。
步骤3、proxy持token获取blob文件。
步骤4、peer持token,去tracker获取镜像层的bt种子。
步骤5、tracker返回于该镜像层唯一可用的密钥对,以及拥有该镜像层的ip地址列表。
此后,peer与peer之间,即可使用该密钥对通信。
本实施例提供的方法,为p2p网络引入了鉴权机制,不同peer节点进行通信时,会使用密钥对加密,拥有资源的peer节点可以使用密钥对中的公钥,对资源加密后发送给其他peer节点,请求资源的peer节点,可以使用密钥对中的私钥,对加密了的资源解密,将资源从密文转换为明文,如此,可以避免资源在p2p网络中传输时被窃取所带来的安全隐患,极大地提升了p2p网络的安全性。并且,每个资源均可以具有对应的密钥对,不同用户的资源能使用不同的密钥对加密,从而保证任一用户使用自己的密钥,无法对其他用户的资源解密,也就无法访问到其他用户的资源,实现了不同用户的资源相互隔离。尤其是,应用于公有云中分发镜像的业务中,可以提供为一种基于p2p网络的、安全地分发镜像的方案,能够保证公有云的租户隔离。
图9是本申请实施例提供的一种资源下载方法的流程图,该方法的执行主体为第一节点,该方法包括以下步骤:
901、第一节点确定目标资源划分的一个或多个第一资源片段,以及每个第一资源片段划分的一个或多个第二资源片段。
第一资源片段:可以看作资源分成的大片,每个资源可以划分为一个或多个第一资源片段,第一资源片段的大小可以根据业务需求设置,示例性地,每个第一资源片段的大小可以为512m,每个第一资源片段可以包括128个第二资源片段。
第二资源片段:即piece,可以看作大片分成的小片,每个第一资源片段可以划分为一个或多个第二资源片段,第二资源片段的大小可以根据业务需求设置,示例性地,每个第一资源片段的大小可以为1m。
在一种可能的设计中,第一资源片段的大小可以与资源的大小正相关,即,若资源比较大,则资源划分的第一资源片段也比较大,若资源比较小,则资源划分的第一资源片段也比较小。
在一种可能的设计中,针对第一资源片段与第二资源片段的大小关系,第一资源片段的大小与每个第二资源片段的大小之间的比例属于预设比例范围,例如,可以设置第一资源片段的大小大约为第二资源片段的100倍左右。
针对第一资源片段的划分方式的确定过程,举例来说,可以包括以下实现方式一以及实现方式二:
实现方式一、第一节点根据预设配置信息,确定目标资源划分的至少一个第一资源片段。
预设配置信息:用于指示第一资源片段的划分方式,例如可以包括第一资源片段的大小,第一节点可以根据预设配置信息,确定目标资源划分的至少一个第一资源片段。预设配置信息可以在第一节点中预先存储,预设配置信息的具体内容可以根据业务需求设置。
举例来说,假设预设配置信息中指示第一资源片段的大小为512m,则第一节点可以将目标资源的第1个512m,作为第1个第一资源片段,将目标资源的第2个512m,作为第2个第一资源片段,依次类推。
实现方式二、第一节点接收跟踪节点发送的配置指令,根据配置指令,确定目标资源划分的至少一个第一资源片段。
本实现方式中,可以由跟踪节点,配置第一节点划分第一资源片段的方式。具体地,跟踪节点可以向第一节点发送配置指令,该配置指令用于指示第一资源片段的划分方式,第一节点可以接收配置指令,根据配置指令,确定目标资源划分的至少一个第一资源片段。
902、在下载过程中,对于目标资源中的任一第一资源片段,第一节点按照bt规则,对第一资源片段中的一个或多个第二资源片段下载。
bt规则:可以为bt协议通用的规则,第一节点可以从第一资源片段中,按照bt规则,选择要下载的第二资源片段,并从第二节点下载第二资源片段。举例来说,bt规则可以包括以下(1)至(4):
(1)严格优先级规则:是指当第一节点从任一第二节点,下载了piece中任一slice后,则当第一节点需要下载该piece中的其他slice时,也会从该第二节点下载其他slice,以保证第一节点尽快下载到一个完整的piece。
(2)最少优先规则:是指当某个piece在所有第二节点中的拥有率最低,则第一节点会优先下载该piece。该最少优先规则具有以下效果:第一,可以防止拥有这个piece的第二节点突然离开,导致某个piece的缺失,进而导致当前下载该piece对应资源的第二节点,都不能下载到一份完整的文件。第二,如果第一节点下载了某些拥有率较低的piece,则其他很多第二节点会向第一节点请求数据,而要想从第一节点下载到数据,那些第二节点就要提供数据给第一节点下载,这样对于提高第一节点的下载速度也是有帮助的。对于整个p2p系统而言,优先下载拥有率较低的piece,可以使得整个p2p系统提高每个piece的拥有度,整个p2p系统会趋向于最优。如果所有第二节点优先下载拥有率较高的piece,会使某些piece的拥有率进一步降低,而拥有这些低拥有率piece的第二节点一旦离开共享系统,则整个文件会越来越不完整,最后导致许多第二节点不能下载到一个完整的文件。
(3)随机选择第一个要下载的piece的规则。第一节点开始下载时,假设采用最少优先规则,则如果某个piece的拥有率很低,那么下载到这个piece就相对较难。而如果第一节点随机选择一个piece,那么更容易下载到该piece,一旦第一节点下载到一个完整的piece,就可以提供给其他第二节点下载,而由于第一节点向其他第二节点上传数据,会导致其他第二节点对第一节点解除阻塞,从而有利于在起始阶段获得较高的下载速度。
(4)最后阶段规则。第一节点在下载接近完成时,如果从一个传输速度很慢的第二节点处下载一个piece,花费很长时间,导致第一节点迟迟不能下载完成。在这种情况下,可以采用最后阶段规则,第一节点向所有第二节点发送对这个piece的某些slice的请求,一旦收到某个第二节点发来的slice,则第一节点向其他第二节点发送cancel消息,只从当前这个第二节点处下载。
通过按照bt规则,选择和下载第二资源片段,可以实现乱序下载的效果。具体来说,对于任一个第一资源片段来说,第一节点下载该第一资源片段中的多个第二资源片段时,多个第二资源片段的下载顺序可以与多个第二资源片段的排列顺序不同。举例来说,假设第一资源片段包括3个piece,可以先下载完第3个piece,再下载完第2个piece,再下载完第1个piece。
本实施例中,通过乱序下载,至少可以达到以下技术效果:
(1)能够提升p2p网络的分发能力:应用本实施例提供的方法,第一节点可以从p2p网络中的多个第二节点,同时下载不同的第二资源片段,也即是,可以从多个peer并行下载piece,例如,第一节点从peera下载piece1,同时从peerb下载piece2,同时从peerc下载piece3,通过同时下载3个piece,比起先下载piece1,再下载piece2,再下载piece3来说,可以极大地加快下载资源的速度,提高下载资源的效率。
(2)能够充分的利用peer与peer的tcp双工通道:应用本实施例提供的方法,第一节点可以与第二节点进行全双工的通信,即从第二节点下载任一piece的同时,向第二节点发送其他piece,从而提升整个p2p网络传输资源的速度和效率。
903、当一个或多个第二资源片段下载完成时,第一节点按照一个或多个第二资源片段在目标资源中的排列顺序,向业务处理模块依次发送一个或多个第二资源片段。
业务处理模块:用于处理业务,封装了处理业务的一条或多条指令,业务处理模块可以通过进程、对象、方法、应用、函数、线程、客户端等各种程序执行单元实现。在一个示例性场景中,结合分发镜像的业务,业务处理模块可以为容器引擎的客户端,例如为docker客户端。在另一个示例性场景中,结合流媒体的业务,目标资源可以为流媒体数据,则资源处理模块可以为播放器。
本实施例中,针对目标资源中的任一第一资源片段,当该第一资源片段中的所有第二资源片段均下载完成后,第一节点即可对所有第二资源片段,按照第二资源片段在目标资源中的排列顺序进行排序,将排序后的所有第二资源片段依次发送给业务处理模块,以便业务处理模块对第二资源片段依次进行处理。
举例来说,请参见图10,目标资源共划分为3个大片(大片即第一资源片段),每个大片划分为3个piece,大片1划分为piece1、piece2以及piece3、大片2划分为piece4、piece5以及piece6、大片3划分为piece7、piece8以及piece9,peer节点中运行peer客户端以及docker客户端,当peer客户端下载大片1时,可以从左侧的peer节点下载piece2,同时从右侧的peer节点下载piece1以及piece3,当peer客户端下载完成piece1、piece2以及piece3后,会将piece1、piece2以及piece3顺序吐给docker客户端,以便docker客户端顺序接收到piece1、piece2以及piece3,从而对piece1、piece2以及piece3依次处理。
在一种可能的设计中,关于第一节点向业务处理模块依次发送第二资源片段的过程,第一节点下载完第一资源片段中的所有第二资源片段,可以对所有第二资源片段,按照在目标资源中的排列顺序进行排序,再向业务处理模块,发送排序后的至少一个第二资源片段。针对排序的过程,在一种可能的实现中,可以确定每个第二资源片段的索引数据,索引数据用于指示对应第二资源片段在目标资源中的位置,可以为pieceindex,第一节点可以根据每个第二资源片段的索引数据,对至少一个第二资源片段进行排序,例如对至少一个第二资源片段,按照索引数据的大小进行排序。
904、第一节点继续下载目标资源中第一资源片段的下一个第一资源片段,直至目标资源下载完成。
当第一节点已经下载完任一第一资源片段后,第一节点会确定目标资源中第一资源片段的下一个第一资源片段,对下一个第一资源片段中的多个第二资源片段,同样按照bt规则,对多个第二资源片段下载,直至下一个第一资源片段下载完成,则将下一个第一资源片段中的每个第二资源片段,依次发送给业务处理模块,依次类推,可以下载完整个目标资源片段。
举例来说,当peer客户端开始下载第一个大片时,会乱序地、并行地下载piece1、piece2以及piece3,当piece1、piece2以及piece3均已下载完成,就会将piece1、piece2以及piece3顺序发送给docker客户端,以使docker客户端得到第一个大片。之后,peer客户端再开始下载第二个大片,同样乱序地、并行地下载piece4、piece5以及piece6,当piece4、piece5以及piece6均已下载完成,就会将piece4、piece5以及piece6顺序发送给docker客户端,以使docker客户端得到第二个大片。以此类推。
需要说明的是,通过上述下载资源片段的处理逻辑,在第一节点从p2p网络中一个或多个peer节点乱序下载资源片段的过程中,能够将已下载的资源片段,同步给业务处理模块。具体来说,第一节点可以并发地执行下载资源片段、向业务处理模块发送资源片段的过程,每当下载完一个第一资源片段,无需等待下一个第一资源片段下载完成,即可将该第一资源片段的第二资源片段发送给业务处理模块,以使业务处理模块能及时处理已下载的各个资源片段。举例来说,docker客户端可以在向peer客户端顺序发送第一个大片中的各个piece的同时,下载第二个大片中的各个piece,如此,通过同时执行下载piece和发送piece的过程,可以极大地提升下载资源的效率。
以下,对本申请实施例提供的部分顺序规则的效果进一步阐述:
相关技术中,流媒体p2p网络中通常对piece按照绝对顺序分发。具体来说,peer节点需要按照每个piece在资源中的排列顺序,依次下载每个piece,并每当下载一个piece后,将piece发送给业务处理模块,从而向业务处理模块依次发送所有的piece。
以流媒体业务为例,peer节点会安装bt客户端和播放器,bt客户端用于在p2p网络中下载流媒体数据,播放器用于播放bt客户端下载的流媒体数据。在下载任一流媒体数据的过程中,当bt客户端确定流媒体数据划分的多个片段后,会将流媒体数据中的第一个piece,作为需要下载的piece,从p2p网络中,确定拥有该第一个piece的peer节点,从该peer节点下载第一个piece,将第一个piece发送给播放器。之后,bt客户端会将流媒体数据中的第二个piece,作为需要下载的piece,从p2p网络中,确定拥有该piece的peer节点,从该peer节点下载第二个piece,将第二个piece发送给播放器。依次类推,通过严格地按照piece在资源中的排列顺序,进行顺序下载,以使播放器能够依次接收到流媒体数据的每个piece,从而连续地、正确地播放流媒体数据。
然而,采用上述方案下载目标资源时,第一,流媒体p2p网络中需要设置超级节点,超级节点是指从源节点获取资源,并提供给p2p网络中每个第一级节点的节点,导致流媒体p2p网络部署较为复杂。第二,流媒体p2p网络为树形网络,即,根节点到每个叶子节点之间的路径唯一,且资源只能从根节点单向传输至每个叶子节点,而无法从叶子节点传输至根节点。
举例来说,请参见图11,图11为相关技术中的流媒体p2p网络的示意图,该流媒体p2p网络中第一层网络为主节点,第二层网络与主节点连接,包括peer节点1、peer节点2,第三层网络与第二层网络连接,包括peer节点3、peer节点4、peer节点5和peer节点6,资源在流媒体p2p网络只能单向传输,即从上一层网络传输至下一层网络,而无法从下一层网络传输至上一层网络,因此无法很好的利用peer与peer的tcp双工通道,导致下载完目标资源所需耗费的时间很长,效率很低。
而本申请实施例中,第一,由于目标资源中每个第一资源片段均顺序下载,即,先下载第一个大片,再下载第二个大片,在此基础上,同一个资源片段中的不同第二资源片段会顺序发送给业务处理模块,例如,大片中的不同piece会顺序发送给docker客户端。那么,业务处理模块会顺序接收到每个第二资源片段(piece),即业务处理模块接收的piece的顺序恰好为资源中piece的排列顺序,因此业务处理模块依次处理每个接收到的piece时,可以保证业务处理结果的正确性。
第二,修改了原生的p2p网络的处理逻辑,使用分片部分地乱序下载,能够提升整体分发速度,可以通过p2p网络,快速分发大量资源。在公有云中分发镜像的业务中,可以解决镜像在大批量分发时,分发速度慢的问题。
第三,本申请实施例提供的p2p网络为网状结构,请参见图12,图12为本申请实施例的一种p2p网络的拓扑结构的示意图,p2p网络中不同peer节点可以随机连接,网状结构中的任一链路用于对资源进行双向传输,p2p网络中的任一链路可以为tcp双工通道,资源既可以上行传输也可以下行传输,从而可以充分地发挥peer与peer的tcp双工通道的传输优势。
第四,本申请实施例提供的p2p网络中无需设置超级节点,目标资源可以直接从源节点分发至各个peer节点,部署结构较为简单。
图13是本申请实施例提供的一种资源下载方法的流程图,该方法的交互主体包括第一节点、第二节点和跟踪节点,该方法包括以下步骤:
1301、第一节点向p2p网络中的跟踪节点,发送第一节点在云计算服务中的iaas特征信息。
iaas特征:第一节点在云计算服务的基础设施方面所具有的特征,可以描述第一节点在机房构架体系中各个维度的属性,iaas特征可以为第一节点的宿主机、第一节点所在的机房、第一节点所在的机架,第一节点所属的集群等。
具体来说,云计算服务提供商通常会按照一定的机房构架体系,层次化部署大量的基础设施设备,以便将大量的基础设施设备组织化、结构化,通过部署好的大量基础设施设备,可以为大量的用户提供云计算服务。例如,可以在一个地域中部署多个机房,在一个机房中部署多个机架,在一个机架中部署多个主机,在一个主机中部署多个虚拟机,如此,地域-机房-机架-主机-虚拟机,组成了公有云的机房构架体系,相应的,第一节点在机房构架体系方面的属性,可以通过第一节点的宿主机、所在的机房、所在的机架,所属的集群描述。
iaas特征信息:用于指示iaas特征,可以包括主机标识、机房标识、机架标识以及集群标识中的至少一项。主机标识用于标识第一节点的宿主机,可以为host(主机)id(identification,以下简称:id),机房标识用于标识第一节点所在的机房,可以为高可用区(availabilityzone,以下简称:az)id,机架标识用于标识第一节点所在的机架,可以为机架的id,集群标识用于标识第一节点所属的集群,可以为clusterid。
针对第一节点获取iaas特征信息的具体过程,在一种可能的实现中,第一节点可以查询cmdb系统,得到iaas特征信息。其中,cmdb系统可以存储p2p网络中每个peer节点对应的主机标识、机房标识、机架标识以及集群标识,以供任一peer节点通过cmdb系统,可以查询到主机标识、机房标识、机架标识以及集群标识。
另外,第一节点也可以通过其他方式得到iaas特征信息,例如,可以在第一节点中预先存储iaas特征信息,又如,可以在云存储系统中的一个或多个存储节点存储p2p中网络中每个peer的iaas特征信息,以供第一节点通过有线或无线网络连接,从云存储系统得到iaas特征信息,再如,可以在硬盘等非易失性存储介质中存储p2p中网络中每个peer的iaas特征信息,以供第一节点通过读取非易失性存储介质,得到iaas特征信息。本实施例对第一节点获取自身的iaas特征信息的方式不做限定。
针对第一节点发送iaas特征信息的具体过程,结合对iaas特征信息的举例,第一节点可以向跟踪节点,发送主机标识、机房标识、机架标识以及集群标识中的至少一项。在一种可能的实现中,第一节点可以在发送对目标资源的获取请求时,在对目标资源的获取请求中携带主机标识、机房标识、机架标识以及集群标识中的至少一项,则通过向跟踪节点发送对目标资源的获取请求,即将主机标识、机房标识、机架标识以及集群标识发送给了跟踪节点,也通知了跟踪节点,第一节点要获取目标资源。
1302、跟踪节点接收第一节点的iaas特征信息,生成对等节点信息,向第一节点发送对等节点信息。
具体来说,跟踪节点可以接收主机标识、机房标识、机架标识以及集群标识中的至少一项,例如,跟踪节点可以接收到对目标资源的获取请求,解析对目标资源的获取请求,得到主机标识、机房标识、机架标识以及集群标识中的至少一项,从而得到第一节点的iaas特征信息。
对等节点信息:用于指示p2p网络中下载目标资源的一个或多个对等节点,可以通过列表、数组、集合或其他数据结构表示。对等节点信息包括一个或多个节点标识,例如可以包括一个或多个节点的ip地址和端口号,以便通过ip地址和端口号指示对应的对等节点。
针对跟踪节点生成对等节点信息的过程,p2p网络中的每个peer节点均可以将iaas特征信息发送给跟踪节点,则跟踪节点可以接收并存储每个peer节点的iaas特征信息。当接收到第一节点的iaas特征信息,可以根据每个peer节点的iaas特征信息与第一节点的iaas特征信息的匹配程度,将与第一节点的iaas特征信息相匹配的节点的标识添加至对等节点信息中,从而生成对等节点信息。
具体来说,结合iaas特征信息的举例,生成对等节点信息的过程可以包括以下(1)至(4)中的一项或多项的组合:
(1)跟踪节点可以根据每个peer节点的宿主机的标识以及第一节点的宿主机的标识,确定与第一节点的宿主机相同的节点,得到第一类节点,将第一类节点的标识添加至对等节点信息中。举例来说,可以确定每个peer节点的hostid,将与第一节点的hostid相同的peer节点的ip地址,添加至对等节点信息中。
(2)跟踪节点可以根据每个peer节点的机架的标识以及第一节点的机架的标识,确定与第一节点的机架相同的节点,得到第二类节点,将第二类节点的标识添加至对等节点信息中。举例来说,可以确定每个peer节点的机架id,将与第一节点的机架id相同的peer节点的ip地址,添加至对等节点信息中。
(3)跟踪节点可以根据每个peer节点的机房的标识以及第一节点的机房的标识,确定与第一节点的机房相同的节点,得到第三类节点,将第三类节点的标识添加至对等节点信息中。举例来说,可以确定每个peer节点的azid,将与第一节点的azid相同的peer节点的ip地址,添加至对等节点信息中。
(4)跟踪节点可以根据每个peer节点的集群的标识以及第一节点的集群的标识,确定与第一节点的集群相同的节点,得到第四类节点,将第四类节点的标识添加至对等节点信息中。举例来说,可以确定每个peer节点的clusterid,将与第一节点的clusterid相同的peer节点的ip地址,添加至对等节点信息中。
本实施例中,对等节点信息中一个或多个节点标识的优先级、可以与对应节点与第一节点的iaas特征信息的匹配程度对应,peer节点的iaas特征信息与第一节点的iaas特征信息之间越匹配,即peer节点与第一节点越近,则优先级越高,从而保证对等节点信息与公有云的机房构架体系以及公有云中每个peer节点的特征相匹配。
具体来说,对于p2p网络中的任一peer节点,若该peer节点与第一节点处于同一宿主机,即该peer节点以及第一节点为同一宿主机中的不同虚拟机,则对等节点信息中该peer节点的优先级最高。若该peer节点与第一节点不处于同一宿主机,而处于同一机架,则对等节点信息中该peer的优先级其次高。若该peer节点与第一节点不处于同一机架,而处于同一机房,则对等节点信息中该peer的优先级再次高。若该peer节点与第一节点不处于同一机房,而处于不同机房,则对等节点信息中该peer的优先级最低。
也即是,为对等节点信息引入了优先级规则,优先返回同hostid的peer节点的ip地址,然后返回同azid的peer节点的ip地址,最后才返回跨az的peer节点的ip地址。
在一个示例性场景中,请参见图14,图14为本申请实施例提供的一种优先级规则的示意图,在集群1中,peer1、peer2均位于host01,即peer1、peer2的宿主机相同,则peer1与peer2之间具有高优先级规则,peer1会最优先从peer2下载资源,peer2也会最优先从peer1下载资源,peer2、peer3位于不同主机,而均位于同一机房1,则peer2与peer3之间具有中优先级规则,peer2会其次优先从peer3下载资源,peer1、peer4位于不同机房,则peer1与peer4之间具有低优先级规则,peer1会最后考虑从peer4下载资源。
以下,对本申请实施例提供的优先级规则的效果进行阐述:
相关技术中,未考虑公有云的机房构架体系,对等节点信息与peer节点所属的主机、机架以及机房无关,导致数据中心在提供云计算服务时,经常出现以下各种情况:第一,对于任一虚拟机来说,即使与该虚拟机位于同一宿主机的其他虚拟机已经拥有资源,该虚拟机仍然经常从其他宿主机下载资源,导致效率很低,而且如果其他宿主机位于不同机房,会导致流量资源的浪费。第二,对于任一虚拟机来说,即使与该虚拟机位于同一机房的其他宿主机已经拥有资源,该虚拟机仍经常跨越机房,从其他机房的宿主机下载资源,导致机房的出口流量。而由于机房的出口流量大小是决定数据中心的运行成本的关键因素,导致数据中心在提供云计算服务时,运行成本很高,因此不适用于公有云的实际业务场景。
而本申请实施例提供的优先级规则,可以适用在公有云中,以在第一节点中应用优先级规则为例,第一节点会优先从同一宿主机的其他peer节点,获取目标资源,其次,优先从同一机架的其他peer节点,获取目标资源,再次,优先从同一机房的其他peer节点,获取目标资源,最后,才会跨机房,从其他机房的peer节点,获取目标资源。如此,实现了就近拉取目标资源,可以保证本地的peer节点最优先地被运用到,从而可以最大地减少跨主机、跨机房的网络流量。
为了区分描述,以同一宿主机的peer节点的优先级描述为第一优先级,同一机架的peer节点的优先级描述为第二优先级,同一机房的peer节点的优先级描述为第三优先级,不同机房的peer节点的优先级描述为第四优先级,相应地,以p2p网络中与第一节点位于同一宿主机的peer节点描述为第一类节点,与第一节点位于同一机架的peer节点描述为第二类节点,与第一节点位于同一机房的peer节点描述为第三类节点,与第一节点位于不同机房的peer节点描述为第四类节点,则对等节点信息中第一类节点的标识具有第一优先级,对等节点信息中第二类节点的标识具有第二优先级,对等节点信息中第三类节点的标识具有第三优先级,对等节点信息中第四类节点的标识具有第四优先级。
其中,优先级用于指示第一节点选中对应节点的优先程度,第一优先级、第二优先级、第三优先级、第四优先级按照从高到低的顺序排序。
在一种可能的实现中,可以通过节点标识在对等节点信息中的位置,指示对应节点的优先级,即,可以将同一宿主机的peer节点的标识,放在对等节点信息的最前方,将同一机架的peer节点的标识,放在同一宿主机的peer节点的标识之后,将同一机房的peer节点的标识,放在同一机架的peer节点的标识之后,将不同机房的peer节点的标识,放在同一机房的peer节点的标识之后,即放在对等节点信息的最后,通过各个节点标识的前后顺序,可以指示各个节点标识对应节点的优先级。
为了区分描述,以对等信息中包括四种位置,按照从前至后的顺序,四种位置依次为第一预设位置、第二预设位置、第三预设位置、第四预设位置为例,对等节点信息中第一类节点的标识排在第一预设位置,对等节点信息中第二类节点的标识排在第二预设位置,对等节点信息中第三类节点的标识排在第三预设位置,对等节点信息中第四类节点的标识排在第四预设位置,以保证第一节点根据对等节点信息中每个节点的标识的位置,即可按照本申请提供的优先级规则,优先选择本地的peer节点,来下载目标资源。
在一种可能的设计中,可以令对等节点信息中主节点的个数不少于指定个数,该主节点是指p2p网络中具有完整的目标资源的节点,即,已经下载完目标资源的peer节点,也称seeder节点。以具有完整的目标资源的节点称为第五类节点为例,对等节点信息中第五类节点的标识的数目不小于预设数目,该预设数目可以根据业务需求设置,例如可以为2,则每个对等节点信息中会至少有2个主节点。
在一种可能的设计中,结合peer节点所处的集群,可以根据clusterid对peer进行分组,并按照clusterid的维度对ip地址隔离返回,即,对等节点信息中每个节点标识对应的节点,均与所述第一节点位于同一集群,换句话说,对等节点信息中可以只包括与第一节点位于同一集群的peer节点的标识,而不包括与第一节点位于不同集群的peer节点的标识,以保证第一节点仅会从同一集群的peer节点,下载目标资源。
1303、第一节点从跟踪节点接收对等节点信息,根据对等节点信息,选择p2p中的第二节点。
第一节点得到对等节点信息后,由于对等节点信息中指示了选择peer节点的优先级,第一节点根据对等节点信息,可以从对等节点信息中每个节点的ip地址中,选择一个或多个ip地址,将该一个或多个ip地址对应的对等节点,作为获取目标资源的第二节点。
具体来说,选择第二节点的方式可以包括以下(1)至(4):
(1)根据对等节点信息,确定第一类节点,作为一个或多个第二节点。
也即是,第一节点会最优先选择同一宿主机的其他peer节点,以便从同一宿主机的其他peer节点下载目标资源。
在一种可能的实现中,第一节点可以根据对等节点信息中节点标识的位置,确定第一类节点。例如,第一节点中可以预先设置,对等节点信息中第一预设位置具有最高的优先级,则第一节点可以根据第一预设位置,确定对等节点信息中排在第一预设位置的节点的标识,得到一个或多个节点的标识,将对应的一个或多个节点作为第一类节点。
(2)根据对等节点信息,确定第二类节点,作为一个或多个第二节点。
具体地,第一节点会其次优先选择同一机架的其他peer节点,以便从同一机架的其他peer节点下载目标资源。
在一种可能的实现中,第一节点可以根据对等节点信息中节点标识的位置,确定第二类节点。例如,第一节点中可以预先设置,对等节点信息中第二预设位置具有第二高的优先级,则第一节点可以根据第二预设位置,确定对等节点信息中排在第二预设位置的节点的标识,得到一个或多个节点的标识,将对应的一个或多个节点作为第二类节点。
(3)根据对等节点信息,确定第三类节点,作为一个或多个第二节点。
具体地,第一节点会再次优先选择同一机房的其他peer节点,以便从同一机房的其他peer节点下载目标资源。
在一种可能的实现中,第一节点可以根据对等节点信息中节点标识的位置,确定第三类节点。例如,第一节点中可以预先设置,对等节点信息中第三预设位置具有第三高的优先级,则第一节点可以根据第三预设位置,确定对等节点信息中排在第三预设位置的节点的标识,得到一个或多个节点的标识,将对应的一个或多个节点作为第三类节点。
(4)根据对等节点信息,确定第四类节点,作为一个或多个第二节点。
具体地,第一节点最后才会选择不同机房的其他peer节点,以便从不同机房的其他peer节点下载目标资源。
在一种可能的实现中,第一节点可以根据对等节点信息中节点标识的位置,确定第四类节点。例如,第一节点中可以预先设置,对等节点信息中第四预设位置具有第四高的优先级,则第一节点可以根据第四预设位置,确定对等节点信息中排在第四预设位置的节点的标识,得到一个或多个节点的标识,将对应的一个或多个节点作为第四类节点。
1304、第一节点从选择的第二节点,下载目标资源。
本实施例提供的方法,结合云计算服务的机房构架体系,为p2p网络中的peer节点设计了优先级规则,第一节点会优先从同一宿主机的其他peer节点,获取目标资源,其次,优先从同一机架的其他peer节点,获取目标资源,再次,优先从同一机房的其他peer节点,获取目标资源,最后,才会跨机房,从其他机房的peer节点,获取目标资源。如此,可以实现就近拉取目标资源,保证本地的peer节点最优先地被运用到,从而可以最大地减少跨主机、跨机房的网络流量。尤其是,可以适用于公有云中分发docker镜像的业务中,可以将公有云中的每个docker机部署为peer节点,则每个docker机在实现使用p2p网络来下载镜像层的基础上,每个docker机能够就近拉取镜像层,可以保证本机的peer节点或者本地的的peer节点被最优先地运用到,从而可以最大程度地减少跨主机、跨机房的网络流量。
图15是本申请实施例提供的一种资源获取装置的结构示意图,如图15所示,该装置包括:接收模块1501、解密模块1502和确定模块1503。
接收模块1501,用于接收一个或多个第二节点的第一数据包,一个或多个所述第一数据包为使用密钥对中的公钥,对所述目标资源的资源片段加密后得到,所述密钥对用于在对等p2p网络中的所述第一节点与一个或多个第二节点之间对所述目标资源加密,所述密钥对包括所述公钥和私钥;
解密模块1502,用于使用该私钥,对一个或多个该第一数据包解密,得到该目标资源的一个或多个资源片段;
确定模块1503,用于根据该一个或多个资源片段,确定该目标资源。
可选地,该密钥对用于对该p2p网络中传输该目标资源的一条或多条链路加密,该一条或多条链路为该第一节点与该一个或多个第二节点之间的链路;
针对该第一节点与该一个或多个第二节点之间的任一链路,每当该第一节点通过该链路接收到任一数据包时,该第一节点使用该私钥,对该数据包解密。
可选地,该装置还包括:
生成模块,用于对于该一个或多个第二节点中的任一第二节点,生成对该目标资源的获取请求;
加密模块,用于该第一节点使用该公钥,对该获取请求加密,得到第二数据包;
发送模块,用于向该第二节点发送该第二数据包。
可选地,该装置还包括:
获取模块,用于获取该目标资源对应的密钥对。
可选地,该获取模块,用于:接收该p2p网络中的跟踪节点的密钥对;或,接收该p2p网络中的跟踪节点的数字证书,该数字证书携带该目标资源的标识;该第一节点根据该数字证书,生成密钥对。
可选地,该装置还包括:
发送模块,用于向跟踪节点,发送认证节点的令牌数据,该令牌数据用于指示该第一节点具有获取该目标资源的权限。
可选地,该装置还包括:
发送模块,用于向该一个或多个第二节点,发送认证节点的令牌数据,该令牌数据用于指示该第一节点具有获取该目标资源的权限。
可选地,该令牌数据包括至少一种权限标识,该至少一种权限标识用于指示该第一节点对该目标资源具有的至少一种权限,该至少一种权限包括获取该目标资源的权限。
可选地,该发送模块,用于使用该私钥,为该令牌数据添加数字签名,得到第三数据包;发送该第三数据包。
可选地,该目标资源为一个镜像层。
可选地,该目标资源划分为一个或多个第一资源片段,每个第一资源片段划分为一个或多个第二资源片段;
该接收模块1501,还用于在下载过程中,对于该目标资源中的任一第一资源片段,按照bt规则,对该第一资源片段中的一个或多个第二资源片段下载;
该装置还包括:
发送模块,用于当该一个或多个第二资源片段下载完成时,按照该一个或多个第二资源片段在该目标资源中的排列顺序,向业务处理模块依次发送该一个或多个第二资源片段;
该接收模块1501,还用于继续下载该目标资源中该第一资源片段的下一个第一资源片段,直至该目标资源下载完成。
可选地,该装置还包括:
发送模块,用于发送该第一节点在云计算服务中的基础设施及服务iaas特征信息;
该接收模块1501,还用于从该跟踪节点接收该p2p网络的对等节点信息,该对等节点信息包括一个或多个节点标识、该一个或多个节点标识在该对等节点信息中的优先级、与对应节点与该第一节点的iaas特征信息的匹配程度对应;
选择模块,用于根据该对等节点信息,选择该p2p网络中的一个或多个第二节点;
该接收模块1501,还用于从选择的一个或多个第二节点,下载该目标资源。
可选地,选择模块,用于根据该对等节点信息,确定第一类节点,作为该一个或多个第二节点,该第一类节点的宿主机与该第一节点的宿主机相同;和/或,根据该对等节点信息,确定第二类节点,作为该一个或多个第二节点,该第二类节点与该第一节点位于同一机架;和/或,根据该对等节点信息,确定第三类节点,作为该一个或多个第二节点,该第三类节点与该第一节点位于同一机房;和/或,根据该对等节点信息,确定第四类节点,作为该一个或多个第二节点,该第四类节点与该第一节点位于同一地域。
可选地,该对等节点信息中第一类节点的标识具有第一优先级,该第一类节点的宿主机与该第一节点的宿主机相同;和/或,
该对等节点信息中第二类节点的标识具有第二优先级,该第二类节点与该第一节点位于同一机架;和/或,
该对等节点信息中第三类节点的标识具有第三优先级,该第三类节点与该第一节点位于同一机房;和/或,
该对等节点信息中第四类节点的标识具有第四优先级,该第四类节点与该第一节点位于同一地域;
其中,该第一优先级、该第二优先级、该第三优先级、该第四优先级用于指示该第一节点选中对应节点的优先程度,该第一优先级、该第二优先级、该第三优先级、该第四优先级按照从高到低的顺序排序。
需要说明的是:上述实施例提供的资源获取装置在获取资源时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将第一节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的资源获取装置与资源获取的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图16是本申请实施例提供的一种资源分发装置的结构示意图,如图16所示,该装置包括:加密模块1601和发送模块1602。
加密模块1601,用于使用密钥对中的公钥,对目标资源的资源片段加密后,得到第一数据包,该密钥对用于在对等p2p网络中的该第二节点与一个或多个第一节点之间对该目标资源加密,该密钥对包括该公钥和私钥;
发送模块1602,用于向该一个或多个第一节点,发送一个或多个该第一数据包。
可选地,该密钥对用于对该p2p网络中传输该目标资源的一条或多条链路加密,该一条或多条链路为该第二节点与该一个或多个第一节点之间的链路;
该加密模块1601,还用于:针对该第一节点与该一个或多个第二节点之间的任一链路,每当生成待通过该链路传输的任一数据包时,使用该公钥,对该数据包加密。
可选地,该装置还包括:
获取模块,用于获取目标资源对应的密钥对。
可选地,获取模块,用于:接收p2p网络中的跟踪节点的密钥对;或,接收p2p网络中的跟踪节点的数字证书,数字证书携带目标资源的标识;根据数字证书,生成密钥对。
可选地,该装置还包括:
接收模块,用于接收该一个或多个第一节点的令牌数据,令牌数据用于指示对应的第一节点具有获取该目标资源的权限;
确定模块,用于根据一个或多个令牌数据,确定该一个或多个第一节点具有获取该目标资源的权限。
可选地,令牌数据包括至少一种权限标识,至少一种权限标识用于指示第一节点对目标资源具有的至少一种权限,至少一种权限包括获取目标资源的权限。
可选地,接收模块,包括:
使用公钥,对令牌数据的数字签名进行验证。
可选地,目标资源为一个镜像层。
需要说明的是:上述实施例提供的资源分发装置在分发资源时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将第二节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的资源分发装置与资源分发的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图17是本申请实施例提供的一种资源下载装置的结构示意图,如图17所示,该装置包括:确定模块1701、下载模块1702和发送模块1703。
确定模块1701,用于确定目标资源,该目标资源划分为一个或多个第一资源片段,每个第一资源片段划分为一个或多个第二资源片段;
下载模块1702,用于在下载过程中,对于该目标资源中的任一第一资源片段,按照比特洪流bt规则,对该第一资源片段中的一个或多个第二资源片段下载;
发送模块1703,用于当该一个或多个第二资源片段下载完成时,按照该一个或多个第二资源片段在该目标资源中的排列顺序,向业务处理模块依次发送该一个或多个第二资源片段;
该下载模块1702,还用于继续下载该目标资源中该第一资源片段的下一个第一资源片段,直至该目标资源下载完成。
可选地,p2p网络的拓扑结构为网状结构,网状结构中的任一链路用于对资源进行双向传输。
需要说明的是:上述实施例提供的资源下载装置在下载资源时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将第一节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的资源下载装置与资源下载的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
图18是本申请实施例提供的一种资源下载装置的结构示意图,如图18所示,该装置包括:发送模块1801、接收模块1802、选择模块1803和下载模块1804。
发送模块1801,用于向对等p2p网络中的跟踪节点,发送该第一节点在云计算服务中的iaas特征信息;
接收模块1802,用于从该跟踪节点接收该p2p网络的对等节点信息,该对等节点信息包括一个或多个节点标识、该一个或多个节点标识的优先级、与对应节点与该第一节点的iaas特征信息的匹配程度对应;
选择模块1803,用于根据该对等节点信息,选择该p2p网络中的一个或多个第二节点;
下载模块1804,用于从该一个或多个第二节点,下载目标资源。
可选地,该选择模块1803,用于:
根据该对等节点信息,确定第一类节点,作为该一个或多个第二节点,该第一类节点的宿主机与该第一节点的宿主机相同;和/或,
根据该对等节点信息,确定第二类节点,作为该一个或多个第二节点,该第二类节点与该第一节点位于同一机架;和/或,
根据该对等节点信息,确定第三类节点,作为该一个或多个第二节点,该第三类节点与该第一节点位于同一机房;和/或,
根据该对等节点信息,确定第四类节点,作为该一个或多个第二节点,该第四类节点与该第一节点位于同一地域。
可选地,该对等节点信息中第一类节点的标识具有第一优先级,该第一类节点的宿主机与该第一节点的宿主机相同;和/或,
该对等节点信息中第二类节点的标识具有第二优先级,该第二类节点与该第一节点位于同一机架;和/或,
该对等节点信息中第三类节点的标识具有第三优先级,该第三类节点与该第一节点位于同一机房;和/或,
该对等节点信息中第四类节点的标识具有第四优先级,该第四类节点与该第一节点位于同一地域;
其中,该第一优先级、该第二优先级、该第三优先级、该第四优先级用于指示该第一节点选中对应节点的优先程度,该第一优先级、该第二优先级、该第三优先级、该第四优先级按照从高到低的顺序排序。
图19是本申请实施例提供的一种资源下载装置的结构示意图,如图19所示,该装置包括:接收模块1901、生成模块1902和发送模块1903。
接收模块1901,用于接收对等p2p网络中第一节点的云计算服务的基础设施及服务iaas特征信息;
生成模块1902,用于根据该p2p网络中每个节点的iaas特征信息与该第一节点的iaas特征信息的匹配程度,生成对等节点信息,该对等节点信息包括一个或多个节点标识,该一个或多个节点标识的排列顺序与该匹配程度对应;
发送模块1903,用于向该第一节点,发送该对等节点信息。
可选地,该对等节点信息中第一类节点的标识具有第一优先级,该第一类节点的宿主机与该第一节点的宿主机相同;和/或,
该对等节点信息中第二类节点的标识具有第二优先级,该第二类节点与该第一节点位于同一机架;和/或,
该对等节点信息中第三类节点的标识具有第三优先级,该第三类节点与该第一节点位于同一机房;和/或,
该对等节点信息中第四类节点的标识具有第四优先级,该第四类节点与该第一节点位于同一地域;
其中,该第一优先级、该第二优先级、该第三优先级、该第四优先级用于指示该第一节点选中对应节点的优先程度,该第一优先级、该第二优先级、该第三优先级、该第四优先级按照从高到低的顺序排序。
需要说明的是:上述实施例提供的资源下载装置在下载资源时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将第一节点的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的资源下载装置与资源下载的方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机程序指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机程序指令可以从一个网站站点、计算机、服务器或数据中心通过有线或无线方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如软盘、硬盘、磁带)、光介质(例如,数字视频光盘(digitalvideodisc,dvd)、或者半导体介质(例如固态硬盘)等。
本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本申请中的字符“/”,一般表示前后关联对象是一种“或”的关系。
本申请中术语“多个”的含义是指两个或两个以上,例如,多个数据包是指两个或两个以上的数据包。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,本领域技术人员可以理解,“第一”“第二”等字样不对数量和执行顺序进行限定。
以上所述仅为本申请的可选实施例,并不用以限制本申请,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
1.一种资源获取方法,其特征在于,所述方法包括:
第一节点接收多个第二节点的多个资源片段;
所述第一节点基于所述多个资源片段,得到镜像。
2.根据权利要求1所述的方法,其特征在于,所述镜像为容器的镜像。
3.根据权利要求1所述的方法,其特征在于,所述方法包括:
所述第一节点向所述第二节点发送令牌数据,所述令牌数据用于指示所述第一节点具有获取所述资源片段的权限。
4.根据权利要求3所述的方法,其特征在于,所述令牌数据由认证节点提供。
5.根据权利要求1至3任一项所述的方法,其特征在于,所述方法包括:
所述第一节点获取所述镜像的种子文件,所述种子文件记录所述多个第二节点的ip地址。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述方法包括:
所述第一节点按照比特洪流bt规则从所述多个第二节点请求所述镜像的多个资源片段。
7.一种系统,其特征在于,所述系统包括:
所述多个第二节点,用于向所述第一节点发送多个资源片段;
所述第一节点,用于接收多个第二节点的多个资源片段,并基于所述多个资源片段得到镜像。
8.根据权利要求7所述的系统,其特征在于,所述镜像为容器的镜像。
9.根据权利要求7所述的系统,其特征在于,
所述第一节点,用于向所述第二节点发送令牌数据,所述令牌数据用于指示所述第一节点具有获取所述资源片段的权限。
10.根据权利要求9所述的系统,其特征在于,所述系统包括:
认证节点,用于向所述第一节点提供令牌数据。
11.根据权利要求7至10任一项所述的系统,其特征在于,
所述第一节点,用于获取所述镜像的种子文件,所述种子文件记录所述多个第二节点的ip地址。
12.根据权利要求7至11任一项所述的系统,其特征在于,
所述第一节点,用于按照比特洪流bt规则从所述多个第二节点请求所述镜像的多个资源片段。
13.一种第一节点,其特征在于,所述第一节点为权利要求7至12任一项所述的第一节点。
14.一种第二节点,其特征在于,所述第二节点为权利要求7至12任一项所述的第二节点。
15.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述处理器执行所述存储器中的指令,使得所述计算机设备执行权利要求1至7任一项所述方法中由第一节点执行的步骤,或者使得所述计算机设备作为第二节点来执行权利要求1至7任一项所述方法中由第二节点执行的步骤。
16.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有指令,所述指令用于实现权利要求1至7任一项所述的方法。
17.一种计算机程序产品,其特征在于,所述计算机程序产品中的指令用于实现权利要求1至7任一项所述的方法。
技术总结