发明内容
本申请提供了一种集群环境中镜像文件下载的方法、节点以及查询服务器,能够提高集群的下载效率。
第一方面,提供了一种集群中镜像文件下载的方法,该方法适用于包括文件服务器和N个节点的集群中,该文件服务器为该N个节点中的至少一个节点提供该镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务,其中,N为大于1的正整数,该方法包括:该N个节点中的第一下载节点接收查询服务器发送的第一上游下载节点的信息,其中,该第一上游下载节点是基于均衡下载策略在下载源集合中确定的为该第一下载节点提供该镜像文件的下载服务的节点,该下载源集合包括该文件服务器和该N个节点中下载了该镜像文件的至少一个节点;该第一下载节点从该第一上游下载节点下载该镜像文件。
在本申请实施例的技术方案中,下载了镜像文件的节点为其他节点提供该镜像文件的下载服务,通过查询服务器对第一下载节点的上游下载节点进行选择,使得第一下载节点可以从该上游下载节点下载该镜像文件,这样能够避免集群中的全部节点都从文件服务器下载镜像文件,可以降低集群环境中下载服务资源的占用,从而能够提高集群的下载效率。
结合第一方面,在第一方面的某些实现方式中,该第一下载节点从该第一上游下载节点下载该镜像文件之后,该方法还包括:该第一下载节点向该查询服务器发送第一下载信息,该第一下载信息为该第一下载节点下载该镜像文件的下载信息,该第一下载信息用于该查询服务器更新该查询服务器中的该镜像文件的下载信息列表,该下载信息列表包括该镜像文件在该N个节点的下载信息。
结合第一方面,在第一方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名和该第一下载节点已下载该镜像文件的文件大小。
结合第一方面,在第一方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名、该第一下载节点已下载该镜像文件的文件大小、该第一下载节点下载该镜像文件的下载时间和该第一下载节点下载该镜像文件的上游下载节点。
结合第一方面,在第一方面的某些实现方式中,所述均衡下载策略包括第一下载条件,该第一下载条件为第一上游下载节点的下游下载节点的个数小于预设阈值。其中,所述下游下载节点即正在从该第一上游下载节点下载该镜像文件的节点。
在本申请实施例的技术方案中,采用均衡策略中的第一下载条件,能够避免集群中多个下游下载节点从同一上游下载节点获取镜像文件,从而能够提高集群的下载效率。
结合第一方面,在第一方面的某些实现方式中,均衡下载策略还包括第二下载条件,该第二下载条件为第一下载节点已下载镜像文件的大小小于第一上游下载节点已下载该镜像文件的大小。
在本申请实施例的技术方案中,采用均衡策略中的第二下载条件,能够确保上游下载节点处已经获取下游下载节点处需要下载的镜像文件的数据。
结合第一方面,在第一方面的某些实现方式中,该第一下载节点接收该查询服务器发送的第一上游下载节点的信息之前,该方法还包括:该第一下载节点向该查询服务器发送查询请求,该查询请求用于查询用于下载镜像文件的上游下载节点的信息。
结合第一方面,在第一方面的某些实现方式中,该查询服务器为集中式的查询服务器。可选的,该集中式的查询服务器可以为该N个节点中的特定节点。
结合第一方面,在第一方面的某些实现方式中,该集中式的查询服务器采用主备模式。
在本申请实施例的技术方案中,查询服务器采用主备模式,由于集中式的查询服务器采用主备模式的服务,即有多个服务器随时准备着提供查询服务。因此,当主查询服务器出现宕机时,备查询服务器会提供查询服务,与仅有一个查询服务器相比,提供了高可用的服务。
结合第一方面,在第一方面的某些实现方式中,可以通过复用所述集群中N个节点中的部分或全部,作为分布式查询服务器系统中的查询服务器。
在本申请实施例的技术方案中,采用分布式的查询服务器系统,可以降低单个查询服务器的负荷。此外,分布式的查询服务器系统复用节点提供查询服务,能够避免单独配置查询服务器带来的资源消耗。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:该第一下载节点从该分布式的查询服务器系统中确定该查询服务器。
结合第一方面,在第一方面的某些实现方式中,复用集群中的N个节点形成分布式的查询服务器系统,该集群还包括存储服务器,该存储服务器存储该N个节点的列表信息。该第一下载节点从该分布式的查询服务器系统中确定该查询服务器,包括:该第一下载节点从该存储服务器中获取列表信息;该第一下载节点根据该列表信息,从该分布式的查询服务器系统中确定该查询服务器。
在本申请实施例的技术方案中,存储服务器中可以存储集群中N个节点的列表信息。第一下载节点根据列表信息,能够从分布式的查询服务器系统中确定该镜像文件的查询服务器。
结合第一方面,在第一方面的某些实现方式中,该第一下载节点根据该列表信息,从该分布式的查询服务器系统中确定该查询服务器,包括:该第一下载节点根据该列表信息,采用一致性哈希算法确定该查询服务器。
在本申请实施例的技术方案中,在下载不同的镜像文件时,采用一致性哈希算法可以从分布式的查询服务器系统中,确定用于查询上游下载节点信息的查询服务器,可以将不同镜像文件的查询服务器分布到不同的节点上,从而降低单个查询服务器的负荷。
结合第一方面,在第一方面的某些实现方式中,该方法还包括:该第一下载节点向该存储服务器发送注册请求,该注册请求包括该第一下载节点的IP地址以及注册端口号。
结合第一方面,在第一方面的某些实现方式中,该N个节点的列表信息包括该N个节点的IP地址以及注册端口号。
在本申请实施例的技术方案中,集群中复用查询服务器的节点通过向存储服务器发送注册请求,从而形成存储服务器中的列表信息。根据列表信息可以确定分布式的查询服务器系统的信息,从而为集群提供分布式的查询服务器系统。采用分布式的查询服务器系统,可以降低单个查询服务器的负荷。此外,分布式的查询服务器系统还可以复用节点提供查询服务,从而提高集群的下载效率。
在某些实现方式中,第一下载节点既作为第一镜像文件的下载节点,又作为N个节点中其它节点(例如第二下载节点)的查询服务器。第一下载节点作为查询服务器还包括查询服务器的功能。
在某些实现方式中,第一下载节点确定该N个节点中的第二下载节点的第二上游下载节点,其中,该第二上游下载节点是基于均衡下载策略在下载源集合中确定的为该第二下载节点提供该第二镜像文件的下载服务的节点,该下载源集合包括文件服务器和N个节点中下载了该第二镜像文件的至少一个节点;该第一下载节点向该第二下载节点发送第二上游下载节点的信息。
在某些实现方式中,该第二下载节点从该第二上游下载节点下载该镜像文件之后,该方法还包括:第一下载节点接收第二下载节点发送的第二下载信息,该第二下载信息为该第二下载节点下载第二镜像文件的下载信息;第一下载节点根据第二下载信息更新第一下载节点中的该第二镜像文件的下载信息列表。
在某些实现方式中,第一下载节点(作为查询服务器)基于均衡下载策略确定所述N个节点中的第二下载节点的第二上游下载节点,包括:
该第一下载节点基于均衡下载策略和第二镜像文件的下载信息列表确定该第二上游下载节点,下载信息列表包括该第二镜像文件在所述N个节点的下载信息。
在某些实现方式中,第二镜像文件的下载信息列表中的第二镜像文件的下载信息可以包括下载的第二镜像文件的文件名和文件大小。可选的,第一下载节点(作为查询服务器)还可以在第二镜像文件的下载信息列表中记录分配的第二上游下载节点的下游下载节点的个数。
在某些实现方式中,该均衡下载策略包括第一下载条件,基于均衡下载策略和下载信息列表确定该第二上游下载节点,包括:
该第一下载节点据第一下载条件确定该第二上游下载节点,所述第一下载条件为该第二上游下载节点的下游下载节点的个数小于预设阈值,该下载信息列表包括第二镜像文件在该N个节点的下载信息。
在某些实现方式中,该均衡下载策略还包括第二下载条件,基于均衡下载策略和下载信息列表确定该第二上游下载节点,包括:
该第一下载节点根据所述第一下载条件和所述第二下载条件确定所述第二上游下载节点,所述第二下载条件为所述第一下载节点已下载该第二镜像文件的大小小于该第二上游下载节点已下载该第二镜像文件的大小。
在某些实现方式中,在该第一下载节点确定该N个节点中的第二下载节点的第二上游下载节点之前,该方法还包括:
该第一下载节点接收第二下载节点发送的查询请求,该查询请求用于查询该第二上游下载节点的信息。
在某些实现方式中,该第二下载节点向所述第一下载节点发送第二下载信息,该第二载信息为该第二下载节点下载该第二镜像文件的下载信息,该第二下载信息用于该第一下载节点更新该第二镜像文件的下载信息列表,该下载信息列表包括该第二镜像文件在N个节点的下载信息。
结合第一方面,在第一方面的某些实现方式中,该第二下载信息包括第二镜像文件的文件名和第二下载节点已下载该第二镜像文件的文件大小。
在某些实现方式中,第二下载信息包括第二镜像文件的文件名、第二下载节点已下载该第二镜像文件的文件大小、该第二下载节点下载第二镜像文件的上游下载节点和该第二下载节点下载第二镜像文件的下载时间。
在本申请实施例的技术方案中,节点既可以作为镜像文件的下载节点,又可以作为其他下载节点的查询服务器,这样可以降低集群环境中下载服务资源的占用,从而能够提高集群的下载效率。
第二方面,提供了一种集群中镜像文件下载的方法,其特征在于,该方法适用于包括文件服务器和N个节点的集群中,该文件服务器为该N个节点中的至少一个节点提供该镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务,其中,所述N为大于1的正整数,该方法包括:查询服务器基于均衡下载策略确定该N个节点中的第一下载节点的第一上游下载节点,其中,该第一上游下载节点是下载源集合中的为该第一下载节点提供该镜像文件的下载服务的节点,下载源集合包括该文件服务器和该N个节点中下载了该镜像文件的至少一个节点;该查询服务器向该第一下载节点发送该第一上游下载节点的信息。
本申请实施例的技术方案,通过查询服务器对第一下载节点的上游下载节点进行选择,使得第一下载节点可以从该上游下载节点下载镜像文件,其中,第一下载节点的上游下载节点是该文件服务器和该N个节点中下载了该镜像文件的至少一个节点,这样能够避免集群中的全部节点都从文件服务器下载镜像文件,可以降低集群环境中下载服务资源的占用,从而能够提高集群的下载效率。
结合第二方面,在第二方面的某些实现方式中,该查询服务器确定该N个节点中的第一下载节点的第一上游下载节点,包括:该查询服务器基于所述均衡下载策略和下载信息列表确定该第一上游下载节点,该下载信息列表包括该镜像文件在该N个节点的下载信息。
结合第二方面,在第二方面的某些实现方式中,所述均衡下载策略包括第一下载条件,该查询服务器基于该均衡下载策略和下载信息列表确定该第一上游下载节点,包括:该查询服务器根据第一下载条件确定该第一上游下载节点,该第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值。其中,下游下载节点即正在从该第一上游下载节点下载该镜像文件的节点。
在本申请实施例的技术方案中,采用均衡策略中的第一下载条件,能够避免集群中多个下游下载节点从同一上游下载节点获取镜像文件,从而能够提高集群的下载效率。
结合第二方面,在第二方面的某些实现方式中,均衡下载策略还包括第二下载条件,该查询服务器基于均衡下载策略和该下载信息列表确定该第一上游下载节点,包括:该查询服务器根据第一下载条件和第二下载条件确定该第一上游下载节点,其中,该第一下载条件为该第二上游下载节点的下游下载节点的个数小于预设阈值,第二下载条件为该第二下载节点已下载第二镜像文件的大小小于该第二上游下载节点已下载该第二镜像文件的大小。
在本申请实施例的技术方案中,采用均衡策略中的第二下载条件,能够确保上游下载节点处已经获取下游下载节点处需要下载的镜像文件的数据。
结合第二方面,在第二方面的某些实现方式中,该方法还包括:该查询服务器接收该第一下载节点发送的第一下载信息,该第一下载信息为该第一下载节点下载该镜像文件的下载信息;该查询服务器根据该第一下载信息更新该查询服务器中的该镜像文件的下载信息列表。
结合第二方面,在第二方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名和该第一下载节点已下载该镜像文件的文件大小。
结合第二方面,在第二方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名、该第一下载节点已下载该镜像文件的文件大小、该第一下载节点下载该镜像文件的下载时间和该第一下载节点下载该镜像文件的上游下载节点。
结合第二方面,在第二方面的某些实现方式中,在该查询服务器确定该N个节点中的第一下载节点的第一上游下载节点之前,该方法还包括:该查询服务器接收该第一下载节点发送的查询请求,该查询请求用于查询用于下载镜像文件的上游下载节点的信息。
结合第二方面,在第二方面的某些实现方式中,该查询服务器为集中式的查询服务器。可选地,该集中式的查询服务器可以为该N个节点中的特定节点。
结合第二方面,在第二方面的某些实现方式中,该集中式的查询服务器采用主备模式。
在本申请实施例的技术方案中,查询服务器采用主备模式,由于集中式的查询服务器采用主备模式的服务,即有多个服务器随时准备着提供查询服务。因此,当主查询服务器出现宕机时,备查询服务器会提供查询服务,与仅有一个查询服务器相比,提供了高可用的服务。
结合第二方面,在第二方面的某些实现方式中,可以通过复用所述集群中N个节点中的部分或全部,作为分布式查询服务器系统中的查询服务器。
在本申请实施例的技术方案中,采用分布式的查询服务器系统,可以降低单个查询服务器的负荷。此外,分布式的查询服务器系统复用节点提供查询服务,能够避免单独配置查询服务器带来的资源消耗。
在某些实现方式中,上述集群中镜像文件下载的方法能够在Docker环境下使用。
第三方面,提供了一种节点,其特征在于,该节点为集群中的节点,该集群包括文件服务器和N个节点,该文件服务器为该N个节点中的至少一个节点提供该镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务,其中,所述N为大于1的正整数,该节点包括:服务端模块和数据下载服务模块;该服务端模块,用于向该数据下载服务模块发送该镜像文件的下载请求;该数据下载服务模块,用于根据该镜像文件的下载请求,从查询服务器获取第一上游下载节点的信息,其中,该第一上游下载节点是基于均衡下载策略在下载源集合中确定的为该节点提供该镜像文件的下载服务的节点,该下载源集合包括该文件服务器和该N个节点中下载了该镜像文件的至少一个节点;以及从该第一上游下载节点下载该镜像文件。
在本申请实施例的技术方案中,下载了镜像文件的节点为其他节点提供该镜像文件的下载服务,通过查询服务器对第一下载节点的上游下载节点进行选择,使得第一下载节点可以从该上游下载节点下载该镜像文件,这样能够避免集群中的全部节点都从文件服务器下载镜像文件,可以降低集群环境中下载服务资源的占用,从而能够提高集群的下载效率。
结合第三方面,在第三方面的某些实现方式中,该数据下载服务模块还用于:向该查询服务器发送第一下载信息,该第一下载信息为该节点下载该镜像文件的下载信息,该第一下载信息用于该查询服务器更新该查询服务器中的该镜像文件的下载信息列表,该下载信息列表包括该镜像文件在该N个节点的下载信息。
结合第三方面,在第三方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名和该节点已下载该镜像文件的文件大小。
结合第三方面,在第三方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名、该节点已下载该镜像文件的文件大小、该节点下载该镜像文件的下载时间和该节点下载该镜像文件的上游下载节点。
结合第三方面,在第三方面的某些实现方式中,所述均衡下载策略包括第一下载条件,该第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值。其中,下游下载节点即正在从该第一上游下载节点下载该镜像文件的节点。
在本申请实施例的技术方案中,采用均衡策略中的第一下载条件,能够避免集群中多个下游下载节点从同一上游下载节点获取镜像文件,从而能够提高集群的下载效率。
结合第三方面,在第三方面的某些实现方式中,均衡下载策略还包括第二下载条件,该第二下载条件为第一下载节点已下载镜像文件的大小小于第一上游下载节点已下载该镜像文件的大小。
在本申请实施例的技术方案中,采用均衡策略中的第二下载条件,能够确保上游下载节点处已经获取下游下载节点处需要下载的镜像文件的数据。
结合第三方面,在第三方面的某些实现方式中,该数据下载服务模块还用于:向该查询服务器发送查询请求,该查询请求用于查询用于下载镜像文件的上游下载节点的信息。结合第三方面,在第三方面的某些实现方式中,该查询服务器为集中式的查询服务器。可选地,该集中式的查询服务器可以为该N个节点中的特定节点。
结合第三方面,在第三方面的某些实现方式中,该集中式的查询服务器采用主备模式。
在本申请实施例的技术方案中,查询服务器采用主备模式,由于集中式的查询服务器采用主备模式的服务,即有多个服务器随时准备着提供查询服务。因此,当主查询服务器出现宕机时,备查询服务器会提供查询服务,与仅有一个查询服务器相比,提供了高可用的服务。
结合第三方面,在第三方面的某些实现方式中,可以通过复用所述集群中N个节点中的部分或全部,作为分布式查询服务器系统中的查询服务器。
在本申请实施例的技术方案中,采用分布式的查询服务器系统,可以降低单个查询服务器的负荷。此外,分布式的查询服务器系统还可以复用节点提供查询服务,能够避免单独配置查询服务器带来的资源消耗。
结合第三方面,在第三方面的某些实现方式中,该数据下载服务模块还用于:从该分布式的查询服务器系统中确定该查询服务器。
结合第三方面,在第三方面的某些实现方式中,复用集群中的N个节点形成分布式的查询服务器系统,该集群还包括存储服务器,该存储服务器包括该N个节点的列表信息;该数据下载服务模块具体用于:从该存储服务器中获取该N个节点的列表信息;根据该列表信息,从该分布式的查询服务器系统中确定用于查询该第一上游下载节点的查询服务器。
在本申请实施例的技术方案中,存储服务器中可以包括集群中N个节点的列表信息。根据列表信息可以确定分布式的查询服务器系统的信息,从而为集群提供分布式的查询服务器系统,提高了集群的下载效率。
结合第三方面,在第三方面的某些实现方式中,该数据下载服务模块具体用于:根据该列表信息,采用一致性哈希算法确定该查询服务器。
在本申请实施例的技术方案中,在下载不同的镜像文件时,采用一致性哈希算法可以从分布式的查询服务器系统中,确定用于查询上游下载节点信息的查询服务器,可以将不同镜像文件的查询服务器分布到不同的节点上,从而降低单个查询服务器的负荷。结合第三方面,在第三方面的某些实现方式中,该数据下载服务模块还用于:向该存储服务器发送注册请求,该注册请求包括该节点的IP地址以及注册端口号。
结合第三方面,在第三方面的某些实现方式中,该N个节点的列表信息包括该N个节点的IP地址以及注册端口号。
在本申请实施例的技术方案中,集群中的N个节点通过向存储服务器发送注册请求,从而形成存储服务器中的列表信息。第一下载节点根据列表信息,能够从分布式的查询服务器系统中确定该镜像文件的查询服务器。结合第三方面,在第三方面的某些实现方式中,该数据下载服务模块还用于提供查询服务器功能。
在某些实现方式中,该节点既作为第一镜像文件的下载节点同时又为N个其它节点(例如第二节点)的查询服务器,该节点作为查询服务器时,数据下载服务模块还包括以下功能:
确定该N个节点中的第二节点的第二上游下载节点,其中,该第二上游下载节点是下载源集合中的为该第二节点提供该第二镜像文件的下载服务的节点,其中,下载源集合包括文件服务器和N个节点中下载了该第二镜像文件的至少一个节点;该节点向该第二节点发送第二上游下载节点的信息。
在某些实现方式中,第二镜像文件的下载信息列表中的第二镜像文件的下载信息可以包括下载的第二镜像文件的文件名和文件大小。第一下载节点(作为查询服务器)并在第二镜像文件的下载信息列表中记录分配的第二上游下载节点的下游下载节点的个数。
在某些实现方式中,该数据下载服务模块根据下载信息列表确定第二上游下载节点,该下载信息列表包括第二镜像文件在该N个节点的下载信息。
在某些实现方式中,该数据下载服务模块还用于:
根据第一下载条件和第二下载条件确定该第二上游下载节点,其中,该第一下载条件为该第二上游下载节点的下游下载节点的个数小于预设阈值;第二下载条件为该第二下载节点已下载第二镜像文件的大小小于该第二上游下载节点已下载该第二镜像文件的大小。
在某些实现方式中,该数据下载服务模块还用于:
接收第二节点发送的第二下载信息,该第二下载信息为该第二下载节点下载第二镜像文件的下载信息;
根据第二下载信息更新第二下载节点中的该第二镜像文件的下载信息列表。
在某些实现方式中,第二下载信息包括第二镜像文件的文件名和第二下载节点已下载该第二镜像文件的文件大小。
在某些实现方式中,第二下载信息包括第二镜像文件的文件名、第二下载节点已下载该第二镜像文件的文件大小、该第二下载节点下载第二镜像文件的下载时间和该第二下载节点下载第二镜像文件的上游下载节点。
在本申请实施例中该节点即为N个节点中的任意一个节点,该节点是对第一镜像文件进行下载的节点,第二节点下载的是第二镜像文件,不同的镜像文件对应着不同的查询服务器。
第四方面,提供了一种查询服务器,其特征在于,该查询服务器应用于集群中,该集群包括文件服务器和N个节点,该文件服务器为该N个节点中的至少一个节点提供该镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务,其中,所述N为大于1的正整数,该查询服务器包括:处理模块,用于基于均衡下载策略确定N个节点中的第一下载节点的第一上游下载节点,其中,该第一上游下载节点是下载源集合中的为该第一下载节点提供该镜像文件的下载服务的节点,该下载源集合包括该文件服务器和该N个节点中下载了该镜像文件的至少一个节点;收发模块,用于向该第一下载节点发送该第一上游下载节点的信息。
在本申请实施例的技术方案中,下载了镜像文件的节点为其他节点提供该镜像文件的下载服务,通过查询服务器对第一下载节点的上游下载节点进行选择,使得第一下载节点可以从该上游下载节点下载该镜像文件,这样能够避免集群中的全部节点都从文件服务器下载镜像文件,可以降低集群环境中下载服务资源的占用,从而能够提高集群的下载效率。
结合第四方面,在第四方面的某些实现方式中,该处理模块具体用于:基于所述均衡下载策略和下载信息列表确定该第一上游下载节点,该下载信息列表包括该镜像文件在该N个节点的下载信息。
结合第四方面,在第四方面的某些实现方式中,所述均衡下载策略包括第一下载条件,该处理模块具体用于:根据第一下载条件确定该第一上游下载节点,其中,该第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值。其中,下游下载节点即正在从该第一上游下载节点下载该镜像文件的节点。
在本申请实施例的技术方案中,采用均衡策略中的第一下载条件,能够避免集群中多个下游下载节点从同一上游下载节点获取镜像文件,从而能够提高集群的下载效率。
结合第四方面,在第四方面的某些实现方式中,均衡下载策略还包括第二下载条件,该处理模块具体用于:根据第一下载条件和第二下载条件确定该第一上游下载节点,其中,该第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值;该第二下载条件为该第一下载节点已下载该镜像文件的大小小于该第一上游下载节点已下载该镜像文件的大小。
在本申请实施例的技术方案中,采用均衡策略中的第二下载条件,能够确保上游下载节点处已经获取下游下载节点处需要下载的镜像文件的数据。
结合第四方面,在第四方面的某些实现方式中,该收发模块还用于:接收该第一下载节点发送的第一下载信息,该第一下载信息为该第一下载节点下载该镜像文件的下载信息;该处理模块还用于:根据该第一下载信息更新该查询服务器中的该镜像文件的下载信息列表。
结合第四方面,在第四方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名和该第一下载节点已下载该镜像文件的文件大小。
结合第四方面,在第四方面的某些实现方式中,该第一下载信息包括该镜像文件的文件名、该第一下载节点已下载该镜像文件的文件大小、该第一下载节点下载该镜像文件的下载时间和该第一下载节点下载该镜像文件的上游下载节点。
结合第四方面,在第四方面的某些实现方式中,该收发模块还用于:接收该第一节点发送的查询请求,该查询请求用于查询用于下载镜像文件的上游下载节点的信息。
结合第四方面,在第四方面的某些实现方式中,该查询服务器为集中式的查询服务器。可选地,该集中式的查询服务器可以为该N个节点中的特定节点。
结合第四方面,在第四方面的某些实现方式中,该集中式的查询服务器采用主备模式。
在本申请实施例的技术方案中,查询服务器通过采用主备模式,由于集中式的查询服务器采用主备模式的服务,即有多个服务器随时准备着提供查询服务。因此,当主查询服务器出现宕机时,备查询服务器会提供查询服务,与仅有一个查询服务器相比,提供了高可用的服务。
结合第四方面,在第四方面的某些实现方式中,可以通过复用所述集群中N个节点中的部分或全部,作为分布式查询服务器系统中的查询服务器。
在本申请实施例的技术方案中,采用分布式的查询服务器系统,可以降低单个查询服务器的负荷。此外,分布式的查询服务器系统还可以复用节点提供查询服务,能够避免单独配置查询服务器带来的资源消耗。
第五方面,提供了一种节点,该节点包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,以使得所述装置执行上述第一方面或第一方面中的任一种可能实现方式中的方法。
第六方面,提供了一种查询服务器,该查询服务器包括:存储器,用于存储计算机程序;处理器,用于执行所述存储器中存储的计算机程序,以使得所述装置执行上述第二方面或第二方面中的任一种可能实现方式中的方法。
结合上述任一方面,在某些实现方式中,上述节点、查询服务器可以为芯片。
第七方面,提供了一种系统,该系统包括文件服务器和上述任一方面或任一方面中的任一种可能实现方式中的节点。
第八方面,提供一种可读存储介质,包括程序或指令,当所述程序或指令在计算机上运行时,根据上述第一方面和第二方面中或其任一种可能实现方式中的方法被执行。
第九方面,提供了一种包含指令的计算机程序产品,其在计算机上运行时,使得计算机执行上述第一方面和第二方面中或其任一种可能实现方式中的方法。
具体实施方式
下面将结合附图,对本申请中的技术方案进行描述。
本申请实施例适用于集群环境的镜像文件下载。其中,镜像文件可以是一个磁盘上的数据在另一个磁盘上存储的一个数据备份。或者,镜像文件也可以是文件处理工具,例如将其他格式的文件转换为特定的文件格式。或者,镜像文件还可以是与压缩包类似的文件,例如,将特定的一系列文件按照一定的格式制作成单一的文件,以方便用户下载和使用。在Docker(容器)环境下,镜像文件还可以为一个注册说明文件,其中包括创建Docker的说明。
集群将多个服务器集中起来进行同一种服务,从客户的角度可以将集群视为一个服务器。集群利用多个计算机或节点进行并行计算从而获得高的计算速度。
图1是本申请实施例应用的集群的一种实现方式的示意图。
如图1所示,集群中可以包括文件服务器101和多个节点102。文件服务器101用于向集群中的多个节点102提供镜像文件下载的服务。
节点102可以为具有处理功能的设备,例如可以包括当前技术已知的任何计算设备,如服务器、台式计算机等等。节点102中可以包括存储器和处理器。存储器可以用于存储程序代码,例如,操作系统以及其他应用程序。处理器可以用于调用存储器存储的程序代码,以实现节点的相应功能。节点中包括的处理器和存储器可以通过芯片实现,此处不作具体的限定。
节点处可以安装有操作系统以及其他应用程序。例如,可以在节点处安装应用程序:容器Docker等。在Docker环境下,可以使用客户端-服务器(Client/Server,C/S)架构模式,接收来自客户的请求,例如,数据下载请求,并处理这些请求。
目前在数据中心环境下,集群中镜像文件的下载采用中心下载的方式,即集群中的全部节点需要从文件中心服务器获取镜像文件,在这种方式下随着同时下载的节点数量的增加,下载时延与下载的节点数量呈线性增长的关系,从而导致节点的下载时延较长。若要保证下载时延不随下载的节点数增加而增长,则需要增加服务器的资源。
在本申请的实施例中,节点既可以从文件服务器获取镜像文件,也可以从已经获取部分或全部镜像文件的其它节点处获取镜像文件。文件服务器可以向初始节点提供镜像文件的下载服务,在集群中的任何节点均可以作为初始节点,初始节点获取镜像文件后,可以作为该镜像文件的文件源,向其它的节点提供该镜像文件的下载服务。这些节点的下载源和下载节点的拓扑可以构成一个镜像文件下载的多叉树结构。
下面将结合具体的例子详细描述本申请的实施例。需要说明的是,这只是为了帮助本领域技术人员更好地理解本申请实施例,而非限制本申请实施例的范围。
应理解,在本申请的各实施例中,下载节点表示进行镜像文件下载的节点,在本申请实施例的关于镜像文件下载方案的描述中,“下载节点”和“节点”可以通用。
还应理解,在本申请的各实施例中,“第一”、“第二”、“第三”等仅是为了指代不同的对象,并不表示对指代的对象有其它限定。
图2示出了本申请实施例的一种实现镜像文件下载的结构示意图。同时结合图2,简要描述了集群的多个节点中任一个节点通过查询服务器获取其上游下载节点的信息的过程。此外,在本申请实施例中,查询服务器可以是文件追踪FileTracker服务器。
需要说明的是,在本申请的实施例中,可以应用在Docker环境下,由于在Docker的协议中可以支持顺序下载,因此集群中的镜像文件可以顺序下载。此处以2叉树结构示意图举例说明,该结构示意图为根据查询服务器确定上游下载节点后,形成的镜像文件的下载源和下载节点的一种实现方式的结构示意图。
图2中的集群包括文件服务器和多个节点,多个节点如图2中的第一节点、第二节点、第三节点、第四节点和第五节点。图2中的节点也可以是图1中的任意一个节点。
在本申请的实施例中,第一节点可以直接从文件服务器下载镜像文件,第一节点下载镜像文件后可以作为该镜像文件的文件源向集群中的其它节点(例如第二节点和第三节点)提供该镜像文件的下载服务。
在第二节点下载镜像文件后,第二节点又可以作为该镜像文件的文件源向集群中的其它节点(例如第四节点和第五节点)提供该镜像文件的下载服务,依次类推。
在本申请的实施例中,集群中的N个节点不需要均通过文件服务器进行镜像文件的下载,其可以通过上游下载节点进行镜像文件的下载。
在本申请的实施例中,查询服务器用于为每个下载节点提供上游下载节点的信息。下面结合图2,描述集群中多个节点中的任一个节点通过查询服务器获取其上游下载节点的信息的过程。
在S210中,第一节点向查询服务器发送查询请求,该查询请求用于查询用于下载镜像文件的上游下载节点的信息,即该查询请求用于查询第一节点的上游下载节点的信息。该查询请求可以包括第一节点处需要下载的镜像文件的文件名以及第一节点处已经下载的该镜像文件的大小。
在S220中,查询服务器向第一节点发送查询结果,该查询结果中包括第一节点的上游下载节点的信息。
例如,第一节点向查询服务器发送查询请求,该请求用于查询第一节点下载镜像文件1的上游下载节点的信息。
查询服务器接收到第一节点发送的查询请求后,向所述第一节点发送查询结果。例如,查询服务器未查询到任何节点处已经下载镜像文件1中的数据,则查询结果为第一节点需要从文件服务器中下载镜像文件1。当第一节点获取查询结果后,第一节点从文件服务器进行镜像文件1的下载。
同理,在S230中第三节点向查询服务器发送查询请求,该查询请求用于查询第三节点的上游下载节点的信息,该查询请求可以包括第三节点处需要下载的镜像文件的文件名以及第三节点处已经下载的该镜像文件的大小。
在S240中,查询服务器向第三节点发送查询结果,该查询结果包括第三节点的上游下载节点的信息。
例如,镜像文件1的大小为300MB,第三节点处已经下载了镜像文件1中100MB的数据,此时第三节点需要继续下载镜像文件1中剩余的200MB数据。查询服务器接收到第三节点的查询请求后,向第三节点发送查询结果。例如,查询结果为第一节点可以是其上游下载节点(假设此处的第一节点已经完成第三节点所需要的200MB数据的下载)。当第三节点收到查询结果后,第三节点从第一节点继续下载镜像文件1中剩余的200MB数据。
应理解,多个节点中的任一节点通过查询服务器查询其上游下载节点的信息的方式可以包括但不限定为以上方式。
还应理解,多个节点中的任一节点进行镜像文件的下载时,可以是通过一个上游下载节点,经过一次下载后完成镜像文件的全部数据的下载,也可以是通过不同的上游下载节点经过几次下载后完成镜像文件全部数据的下载。
下面将结合图3,具体介绍集群中的任意一个节点通过查询服务器查询上游下载节点的信息,并从上游下载节点下载镜像文件的过程。
图3是根据本申请一个实施例的集群中镜像文件下载的方法的流程示意图。其中,第一下载节点可以是集群中N个节点中的任意一个节点,例如,可以是图1中的任意一个节点。
在本申请的实施例中,第一下载节点可以为集群中N个节点中的任一个节点,镜像文件的下载方法适用于包括文件服务器和N个节点的集群中,其中,N为大于1的正整数,文件服务器为该N个节点中的至少一个节点提供镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务。
S310,N个节点中的第一下载节点接收查询服务器发送的第一上游下载节点的信息,其中,第一上游下载节点是基于均衡下载策略在下载源集合中确定的为该第一下载节点提供镜像文件的下载服务的节点,下载源集合包括该文件服务器和N个节点中下载了该镜像文件的至少一个节点。
应理解,在本申请的实施例中,第一上游下载节点是从下载了镜像文件的节点中选取的一个节点,该第一上游下载节点可以适用两种场景:
第一种场景为第一上游下载节点为集群全部节点中,下载了该镜像文件的节点和文件服务器中的一个节点。
第二种场景为第一上游下载节点为集群部分节点中,下载了该镜像文件的节点和文件服务器中的一个节点。本申请实施例对此不作限定。
在本申请的实施例中,N个节点中的第一下载节点在下载镜像文件时,从查询服务器获取第一上游下载节点的信息。
可选地,第一下载节点可以先向查询服务器发送第一上游下载节点的查询请求,查询服务器根据查询请求,向该第一下载节点发送第一上游下载节点的信息。
其中,查询请求用于查询用于下载镜像文件的上游下载节点的信息。即该查询请求用于查询该第一上游下载节点的信息。查询请求可以包括需要下载镜像文件的文件名以及第一下载节点处目前已经下载的该镜像文件的文件大小。
可选地,在本申请的实施例中,查询服务器也可以根据下载信息列表主动向下载节点发送相应的上游下载节点的信息,也就是说,本申请实施例并不限定上游下载节点的信息是基于请求而发送的。
在本申请的实施例中,查询服务器基于均衡下载策略和下载信息列表确定所述第一上游下载节点(具体确定过程参见后续描述)。所述下载信息列表包括所述镜像文件在所述N个节点的下载信息。
需要说明的是,下载信息列表包括所述镜像文件在所述N个节点的下载信息,当集群中的某一个节点没有下载该镜像文件时,下载信息列表中对应该节点的下载信息可以为空的。即下载列表中对应下载了该镜像文件的节点的下载信息不为空,对应没有下载该镜像文件的节点的下载信息为空。
可选地,在本申请的一个实施例中,所述下载信息列表中的下载信息可以包括下载的镜像文件的文件名和文件大小。
查询服务器可以根据各个节点的下载信息维护下载信息列表,例如,以下表1所示的下载信息列表,并在下载信息列表中记录分配的上游下载节点的下游下载节点的个数。应理解,在本申请的实施例中,下游下载节点即从下载源集合中正在获取镜像文件的节点。其中,下载源集合包括文件服务器和集群的N个节点中下载了镜像文件的至少一个节点。
可选地,在本申请的一个实施例中,所述下载信息列表中的下载信息可以包括下载镜像文件的文件名、已下载的该镜像文件的文件大小、下载该镜像文件的下载时间和下载该镜像文件的上游下载节点。
除了下载镜像文件的文件名和已下载的该镜像文件的文件大小外,各节点的下载信息还可以包括下载该镜像文件的下载时间和下载该镜像文件的上游下载节点。这样,查询服务器可以生成更详细的下载信息列表,从而基于均衡下载策略确定上游下载节点,本申请实施例对此不作限定。
需要说明的是,下载信息列表可以为镜像文件在多个节点处的下载信息。对于下载不同的镜像文件,下载信息列表不同。下载信息列表中的下载信息记录的是下载了同一镜像文件的不同下载节点的信息。
例如,表1所示镜像文件1(File1)在各节点处具体的下载信息。表1为本申请实施例中一种镜像文件下载信息列表的实现方式,本申请实施例对此不作限定。
如表1所示,一个镜像文件的下载信息列表中可以包括下载镜像文件的文件名、下载该镜像文件的节点名称以及每个下载该镜像文件的节点处已经下载该镜像文件的大小和下载该镜像文件1的下游下载节点数量。
表1
在表1中,下载镜像文件1(File1)的节点有第一节点、第二节点、第三节点、第四节点和第五节点,其中第一节点处已下载镜像文件1中的1000MB数据、第二节点处已下载镜像文件1的500MB数据、第三节点处已下载镜像文件1中的800MB数据、第四节点处已下载镜像文件1中的400MB数据、第五节点处已下载镜像文件1中的400MB数据。同时表1中还记录了下载镜像文件1的每个节点的下游下载节点个数,例如,第一节点具有2个下游下载节点,第二节点具有2个下游下载节点,第三节点、第四节点和第五节点处没有下载镜像文件1的下游下载节点。在本申请的实施例中,查询服务器可以基于均衡下载策略确定该第一上游下载节点。均衡下载策略用于均衡集群中各个节点的下载负荷。该均衡下载策略可以是基于集群中每个节点的下载情况而设置的策略,例如,可以根据当前每个节点处镜像文件的下载情况进行设置该均衡下载策略,并且还可以动态地调节该均衡下载策略,从而避免集群中过多节点从一个节点处下载镜像文件,而造成下载瓶颈。
可选地,在本申请的一个实施例中,该均衡下载策略可以包括第一下载条件,即所述查询服务器可以根据第一下载条件实现集群中负载的均衡。其中,第一下载条件为第一上游下载节点的下游下载节点的个数小于预设阈值。
可选地,在本申请的一个实施例中,均衡下载策略还可以包括第二下载条件,即所述查询服务器可以根据第一下载条件和第二下载条件确定所述第一上游下载节点。其中,第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值;第二下载条件为所述第一下载节点已下载该镜像文件的大小小于该第一上游下载节点已下载该镜像文件的大小。
在本申请的实施例中,在本申请实施例的技术方案中,采用均衡策略中的第一下载条件,能够避免集群中多个下游下载节点从同一上游下载节点获取镜像文件。采用均衡策略中的第二下载条件,能够确保上游下载节点处已经获取下游下载节点处需要下载的镜像文件的数据。
结合表1,例如,当第六节点需要下载镜像文件1中的数据时,假设在此之前第六节点处已经下载了镜像文件1中450MB的数据。此时,第六节点向查询服务器发送查询请求,该查询请求用于查询第六节点的上游下载节点的信息。若预设阈值为2,结合表1,查询服务器可以采用第一下载条件和第二下载条件,确定第六节点的上游下载节点。其中,第一下载条件为第一上游下载节点的下游下载节点的个数小于预设阈值,第二下载条件为第一下载节点已下载该镜像文件的大小小于第一上游下载节点已下载该镜像文件的大小。
根据第一下载条件和第二下载条件可知,由于第一节点和第二节点处下载该镜像文件的下游下载节点数量为2,不满足第一下载条件;由于第六节点处已经下载的镜像文件1的数据大小为450MB,大于第四节点和第五节点处已经下载的镜像文件1的数据大小400MB,不符合第二下载条件。因此,查询服务器结合表1根据第一下载条件和第二下载条件,确定第三节点可以为第六节点的上游下载节点。
S320,第一下载节点从第一上游下载节点下载该镜像文件。
在本申请的实施例中,第一下载节点接收查询服务器发送的第一上游下载节点的信息,第一下载节点根据该第一上游下载节点的信息确定第一上游下载节点,从该第一上游下载节点获取镜像文件。
应理解,此处第一下载节点从第一上游下载节点下载镜像文件时,可以下载全部的镜像文件或者下载部分的镜像文件。
可选地,当第一下载节点在第一上游下载节点下载该镜像文件后,第一下载节点向该查询服务器发送第一下载信息。其中,第一下载信息为该第一下载节点下载该镜像文件的下载信息。
应理解,当第一下载节点开始镜像文件的下载,但在没有完成本次镜像文件下载之前,它就可以为其它下游下载节点提供该镜像文件的下载服务。
例如,当第一下载节点下载了镜像文件中的10MB数据时,第一下载节点向查询服务器发送下载该镜像文件的第一下载信息。这样第一下载节点在下载该镜像文件的剩余数据的同时,若其它下载节点需要下载该镜像文件的这10MB数据,则查询服务器可以根据上述第一下载信息,确定第一下载节点可以为其他下载节点提供该镜像文件的这10MB数据的下载服务。
在本申请的实施例中,第一下载节点向查询服务器发送下载镜像文件的第一下载信息的时间不作具体的限定。
在本申请的实施例中,第一下载信息可以只包括该镜像文件的文件名和第一下载节点已下载的该镜像文件的文件大小;或者,只包括该镜像文件的文件名、第一下载节点已下载的该镜像文件的文件大小和第一下载节点下载该镜像文件的上游下载节点。本申请实施例对此并不限定。
查询服务器可以根据接收到的第一下载信息更新该查询服务器中的下载信息列表,该下载信息列表包括该镜像文件在多个节点的下载信息。例如,更新表1中的镜像文件1(File1)在已经下载镜像文件1的节点的下载信息。
在本申请的实施例中,当一个节点从该节点的上游下载节点下载镜像文件时,该节点可以选择在开始下载后的任意时刻将镜像文件的下载信息发送至查询服务器。查询服务器根据接收到的下载信息,更新该服务器中的下载信息列表。
在本申请的实施例中,查询服务器可以为集中式的查询服务器。该集中式的查询服务器可以为集群中的某个节点。
需要说明的是,集中式的查询服务器可以为复用集群N个节点中某些特定的节点,以提供集中式的查询服务器功能。
在本申请的实施例中,集中式的查询服务器采用主备模式。例如,主查询服务器负责监测全部的备查询服务器,并在备查询服务器宕机时,主查询服务器会对备查询服务器进行重启。
如果主查询服务器宕机了,集群中的一个备查询服务器会执行主查询服务器的工作。这种主/备(Master/Slave)架构方式下会有至少2台或者更多的服务器作为查询服务器,但是主备模式中一个时刻仅有一个主查询服务器进行工作。
对于集中式的查询服务器而言,由于集中式的查询服务器采用主备模式的服务,即有多个服务器随时准备着提供查询服务。因此,当主查询服务器出现宕机时,备查询服务器会提供查询服务。本申请实施例中的集中式的查询服务器与仅有一台查询服务器相比,至少会有2台查询服务器同时准备着提供查询服务。因此本申请实施例与仅有一个查询服务器相比,能够提供高可用的服务。但是集中式的查询服务器采取主备模式的服务时,也可能会存在一定的瓶颈。由于一个时刻仅能有一个查询服务器进行工作,故当集群中的多个节点在同一时刻从同一个查询服务器查询上游下载节点的信息时,可能会存在单点性能的瓶颈。
因此,对于本申请的实施例中,查询服务器也可以为分布式的查询服务器系统。
在本申请的实施例中,向第一下载节点发送第一上游下载节点的信息的查询服务器,为分布式的查询服务器系统中的一个查询服务器。
作为一种可选的实现方式,分布式的查询服务器系统可以是复用集群中N个节点中的部分或全部形成的系统。在该分布式的查询服务器系统中具有多个查询服务器,多个查询服务器以分布式的方式提供服务。
应理解,在本申请实施例中,查询服务器也可以是独立的服务器,即可以不复用集群中的节点,此处不作具体限定。分布式的查询服务器还可以独立的服务器与复用集群中的节点的服务器的集合。
应理解,对于分布式的查询服务器系统,不同的镜像文件可以按照分布式的方式对应不同的查询服务器,这样查询服务器功能就被分布到了不同的查询服务器上进行执行,从而不会产生单点性能瓶颈的问题。
在本申请的实施例中,集群中还包括存储服务器,该存储服务器用于向节点提供列表信息,该列表信息用于节点在分布式的服务器系统中确定该镜像文件的查询服务器。N个节点中的第一下载节点向所述存储服务器发送注册请求,该注册请求包括该第一下载节点的IP地址以及注册端口号。第一下载节点的IP地址以及注册端口号存储在存储服务器中的列表信息中。
也就是说,存储服务器上的列表信息是根据N个节点中的每一个节点向存储服务器发送注册请求后,存储服务器获取注册请求中携带的下载节点的IP地址以及注册端口号的信息,从而形成的N个节点的列表信息。
对于分布式的查询服务器系统复用集群中N个节点的情况,在存储服务器中包括N个节点的列表信息,集群中的N个节点均会向存储服务器发送注册请求,该注册请求包括该第一下载节点的IP地址以及注册端口号。存储服务器根据N个节点的注册请求形成N个节点的列表信息。类似的,对于分布式的查询服务器系统复用集群中部分节点的情况,存储服务器中包括该部分节点的列表信息。例如,集群中包括100个节点,存储服务器中的列表信息可以为全部节点(例如,100个节点)的列表信息,也可以为集群中部分节点(例如,50个节点或80个节点)的列表信息。
在本申请的实施例中,例如,存储服务器为一种高可用的键值存储系统ETCD(Ahighly-available key value store for shared configuration and servicediscovery),ETCD是用于共享配置和服务发现的分布式,一致性的KV键值存储数据(key-value,KV)存储系统。
ETCD的工作原理为使用分布式强一致性日志Raft协议,来维护集群内各个节点状态的一致性。简单说,ETCD集群是一个分布式系统,由多个节点相互通信构成整体对外进行服务,每个节点都存储了完整的数据,并且通过Raft协议保证每个节点维护的数据是一致的。
在本申请的实施例中,第一下载节点可以从分布式的查询服务器系统中确定查询第一上游下载节点信息的查询服务器,包括:
第一下载节点从存储服务器中获取列表信息;
第一下载节点根据列表信息采用一致性哈希算法,从分布式的查询服务器系统中确定查询服务器。
第一下载节点首先从存储服务器中获取列表信息,第一下载节点采用哈希算法计算该镜像文件的文件名的哈希值和列表信息中N个节点的哈希值。通过比较哈希值的大小,从分布式的查询服务器系统中确定查询服务器。例如,通过比较该镜像文件的文件名的哈希值和N个节点的哈希值,确定与该镜像文件的文件名的哈希值最接近的哈希值所对应的节点,该节点作为该镜像文件的查询服务器。然后,第一下载节点向确定的查询服务器发送该镜像文件的查询请求,若第一下载节点为集群中第一个下载该镜像文件的节点,查询服务器此时第一次接收到该镜像文件的查询请求,查询服务器根据第一次接收到的该镜像文件的查询请求确定该查询服务器作为该镜像文件的查询服务器。
可选地,在本申请的实施例中,若第一下载节点为集群中第一个下载该镜像文件的节点时,查询服务器中没有该镜像文件的下载信息列表,则查询服务器确定文件服务器为该第一下载节点的上游下载节点,即第一下载节点需要从文件服务器获取该镜像文件。当第一下载节点完成本次镜像文件的下载后,会向该查询服务器发送下载该镜像文件的第一下载信息,则查询服务器中生成下载该镜像文件的下载信息列表。因此,查询服务器第一次接收到该镜像文件的查询请求时,即作为该镜像文件的查询服务器。
可选地,在本申请的实施例中,若第一下载节点不是集群中第一个下载该镜像文件的节点时,集群中已经有节点下载过该镜像文件。此时,该查询服务器中已经有下载该镜像文件的下载信息列表。
需要说明的是,此处分布式的查询服务器系统为复用集群中的N个节点,信息列表中存储的信息为各个节点的信息,因此计算出N个节点的哈希值,例如节点名称的哈希值,即得到分布式的查询服务器系统中的各个查询服务器的哈希值。
第一下载节点根据列表信息,采用一致性哈希算法从分布式的查询服务器系统中确定该镜像文件的查询服务器。(具体步骤在下面图5中进行描述)。
应理解,在本申请的实施例中,集群中的任意一个节点(例如,第一节点)的功能可能包括以下三种情况,本申请对此不作限定:第一种可能:第一节点仅作为第一镜像文件的下载节点,可以具有上述集群中镜像文件下载的方法中的第一下载节点的功能。
第二种可能:第一节点仅作为查询下载第一镜像文件的上游下载节点信息的查询服务器,可以具有上述集群中镜像文件下载的方法中的查询服务器的功能。
第三种可能:第一节点既作为第一镜像文件的下载节点,又作为N个节点中其它节点(例如第二下载节点)的查询服务器。
本申请实施例中,以第一下载节点下载的为第一镜像文件,第二下载节点下载的为第二镜像文件为例进行说明。不同镜像文件可以分别对应不同的查询服务器。
对于第三种可能,第一节点既作为第一镜像文件的下载节点,又作为N个节点中其它节点(例如第二下载节点)的查询服务器,例如,第二下载节点处下载第二镜像文件时,第二下载节点计算第二镜像文件的文件名的哈希值和列表信息中N个节点的哈希值。通过比较哈希值的大小,例如,通过比较该第二镜像文件的文件名的哈希值和N个节点的哈希值,确定与第二镜像文件的文件名的哈希值最接近的哈希值所对应的第一节点,作为第二镜像文件的查询服务器。第一节点作为查询服务器时还包括查询服务器的功能。
可选地,在本申请的一个实施例中,第一节点接收到第二下载节点发送的查询请求,该查询请求用于查询下载第二镜像文件的上游下载节点的信息。第一节点作为查询服务器确定能够为该第二下载节点提供该第二镜像文件下载的第二上游下载节点。其中,该第二上游下载节点是下载源集合中为该第二下载节点提供该第二镜像文件的下载服务的节点,该下载源集合包括该文件服务器和N个节点中下载了该第二镜像文件的至少一个节点。第一节点在确定该第二上游下载节点后,向该第二下载节点发送该第二上游下载节点的信息。
可选地,在本申请的一个实施例中,第一节点作为查询服务器可以根据第二镜像文件的下载信息列表确定第二上游下载节点,该下载信息列表包括第二镜像文件在该N个节点的下载信息。
在本申请的实施例中,第一节点作为查询服务器可以基于所述均衡下载策略和下载信息列表确定第二上游下载节点。
可选地,在本申请的一个实施例中,该均衡下载策略可以包括第一下载条件,第一节点可以根据第一下载条件确定该第二上游下载节点,第一下载条件为该第二上游下载节点的下游下载节点的个数小于预设阈值。
可选地,在本申请的一个实施例中,该均衡下载策略还可以包括第二下载条件,第一节点可以根据第一下载条件和第二下载条件确定该第二上游下载节点,其中,该第一下载条件为该第二上游下载节点的下游下载节点的个数小于预设阈值;第二下载条件为该第二下载节点已下载的第二镜像文件的大小小于该第二上游下载节点已下载该第二镜像文件的大小。
可选地,在本申请的一个实施例中,该第二下载节点向查询服务器发送的下载信息,可以包括下载第二镜像文件的文件名和已下载的该第二镜像文件的文件大小。
查询服务器可以根据各个节点的下载信息维护下载信息列表,例如,上述表1所示的下载信息列表,并进一步基于均衡下载策略和下载信息列表确定上游下载节点,并在下载信息列表记录分配的上游下载节点的下游节点个数。在本申请的一个实施例中,该下载信息可以包括下载第二镜像文件的文件名和已下载的该第二镜像文件的文件大小。
除了该第二镜像文件的文件名和已下载的该第二镜像文件的文件大小外,各节点的下载信息还可以包括下载该第二镜像文件的下载时间和下载该第二镜像文件的上游下载节点。这样,查询服务器(此处为第一节点)可以根据生成更详细的下载信息列表基于均衡下载策略确定上游下载节点,本申请实施例对此不作限定。
需要说明的是,当第二下载节点开始第二镜像文件的下载,在没有完成第二镜像文件的下载之前,它就可以为向第一节点发送第二下载信息。第一节点根据第二下载信息更新第一节点中的该第二镜像文件的下载信息列表。
可选地,在本申请的实施例中,第二下载节点从第二上游下载节点下载第二镜像文件时,可以下载全部第二镜像文件或者也可以下载部分第二镜像文件。
在本申请的实施例中,第一下载节点下载的第一镜像文件的信息为第一下载信息,第二下载信息与此相类似,主要区别在于,第二下载信息为第二下载节点中下载的第二镜像文件的信息。
需要说明的是,在本申请实施例的上述方法可以通过在节点的数据下载服务(Data Download Service,DDS)来实现。具体的,可以通过DDS中的服务管理DDS ServiceHandle模块来实现上述实施例中的第一下载节点的功能。通过DDS中的文件追踪FileTracker模块来实现上述实施例中的查询服务器的功能。若节点既作为下载节点,又为其它节点提供查询服务器的功能,则该节点可以通过DDS中的DDS Service Handle和FileTracker模块分别实现上述实施例中的下载节点的功能和查询服务器的功能(下面在图6中进行具体描述)。
在本申请的实施例中,提供了一种集群中镜像文件下载的方法,通过查询服务器查找各个节点的上游下载节点的信息。集群中镜像文件的下载,由采用中心下载方式,即全部节点均在文件服务器中下载镜像文件,变为基于文件服务器和其它节点提供文件源的镜像文件下载方式,能够降低镜像文件下载的时间复杂度。例如,可以使得集群中镜像文件下载的时间复杂度由O(N)(表示与N为正比关系)下降到了O(LogN)(表示与N为对数关系)。例如,若集群中有100节点则集群的下载时间由与100K成正比变成与Log100K成正比,从而减少下载时间提高了集群中的下载效率。
本申请的集群中镜像文件下载的方法,在1000节点的集群中实施了验证。验证中,1000节点会同时下载180MB的一个高性能的超文本传输协议和反向代理服务器Nigix镜像,我们通过记录下载完成时间来验证本方案的下载的加速效果。在没有使用本申请的集群中镜像文件下载的方法时,需要95分钟(5700秒)完成下载;在使用本申请的集群中镜像文件下载的方法时,仅需要50秒完成下载,加速效果超过120倍。
图4是本申请一个实施例的集群中镜像文件下载的方法的交互性流程图。
图4中的第一节点、第二节点可以为集群中N个节点中的任意两个节点。例如,可以是图1中的任意一个节点,查询服务器可以为集中式的查询服务器或者为分布式的查询服务器系统中的查询服务器。
应理解,第一节点也可以称为第一下载节点,第二节点也可以称为第二下载节点。
在本申请的实施例中,例如,镜像文件1的数据大小为500MB,在本次下载之前第一节点和第二节点处已经下载镜像文件1中的数据的情况如表2所示,其中第一节点处已经下载镜像文件1中的100MB数据(此处100MB镜像文件1中的数据可以为上一次下载镜像文件1的数据),第二节点处还未下载镜像文件1。
S410,第一节点、第二节点分别向查询服务器发送下载镜像文件1的查询请求。
由于第一节点和第二节点均需要下载镜像文件1,因此第一节点和第二节向同一查询服务器发送查询请求。在本申请的实施例中,第一节点发送的查询请求中可以包括第一节点已经下载镜像文件1中的100MB数据的信息。第一节点通过查询服务器查询第一上游下载节点的信息。第二节点发送的查询请求中包括第二节点处还未下载镜像文件1数据的信息,第二节点通过查询服务器查询第二上游下载节点的信息。
S420,查询服务器根据查询请求分别向第一节点、第二节点发送查询结果。
在本申请的实施例中,查询服务器向第一节点发送查询结果为第一上游下载节点为文件服务器,向第二节点发送查询结果为第二上游下载节点为第一节点。
S430,根据S420的查询结果,第一节点从文件服务器获取镜像文件1以及第二节点从第一节点处获取镜像文件1。
S440,第一节点以及第二节点分别向查询服务器发送镜像文件1的下载信息。
例如,第二节点可以在从第一节点处获取镜像文件1中的100MB数据后,向查询服务器发送镜像文件1的下载信息。第一节点可以在从文件服务器获取镜像文件1中的500MB数据后,向查询服务器发送镜像文件1的下载信息。当查询服务器接收第一节点和第二节点发送的镜像文件1的下载信息后,更新镜像文件1的下载信息列表。更新后的镜像文件1的下载信息列表如表3所示。需要说明的是,第二节点、第一节点还可以在其它时机向查询服务器发送镜像文件1的下载信息。以第二节点为例,第二节点可以在下载镜像文件1小于100MB的数据时,向查询服务器发送镜像文件1的下载信息,或者第二节点可以在下载完镜像文件1的100MB数据后继续从第一节点下载镜像文件1中的数据,并在下载完镜像文件1的500MB数据后,向查询服务器发送镜像文件1的下载信息。应理解,此处仅为举例,并不对本申请的实施例作限定。
下载信息列表更新后,其它节点下载该镜像文件1时,查询服务器会根据更新后的下载信息列表,选择合适的上游下载节点为其它节点提供该镜像文件1的下载服务。
表2
表3
应理解,第一节点、第二节点向查询服务器发送下载信息可以是在第一节点、第二节点下载镜像文件1结束时发送,也可以是与下载镜像文件1同时进行。第一节点、第二节点下载的部分镜像文件1的数据能够作为文件源为其它节点提供镜像文件1的下载。此处为本申请的实施例,不作具体限定。
本申请的实施例中,提供了一种在集群中镜像文件下载的方法,具体地通过查询服务器查找各个节点的上游下载节点的信息,使得集群中的镜像文件的下载由采用中心下载方式,即全部节点均在文件服务器中下载镜像文件,变为基于文件服务器和其它节点提供的文件源的镜像文件下载,使得集群中镜像文件下载的时间复杂度由O(N)下降到了O(LogN),从而降低了集群环境中下载服务资源的占用,提高了集群中的下载效率。
图5是根据本申请一个实施例的哈希环的示意图。
应理解,图5仅是示例,不构成对本申请实施例的限定。根据图3中的描述可知,第一下载节点根据列表信息,采用一致性哈希算法确定用于查询第一上游下载节点的查询服务器。
如图5所示,一个分布式的查询服务器系统由N个节点构成,此处分布式的查询服务器系统为复用集群中的N个节点。集群中还包括存储服务器,在存储服务器中包括N个节点的列表信息,第一下载节点根据列表信息采用一致性哈希算法分别计算出每个节点的哈希值,根据镜像文件的文件名的哈希值以及每个节点的哈希值进行比较,确定分布式的查询服务器系统中用于查询第一上游下载节点的查询服务器。
需要说明的是,文件名的哈希值可以为根据文件名称或者文件编号采用一致性哈希算法得到的哈希值。节点的哈希值可以为根据节点的编号采用一致性哈希算法得到的哈希值。服务器名称哈希值可以为根据服务器名称编号采用一致性哈希算法得到的哈希值。在本申请的实施例中,分布式的查询服务器系统复用集群中的N个节点,即每个节点的哈希值就为每个复用该节点的查询服务器的哈希值。
下面将举例说明一致性哈希算法。
应理解,本申请实施例中采用的哈希算法得到的哈希信息可以是表格的形式,还可以例如为哈希环的形式,在下文中仅以哈希信息为哈希环的形式进行说明。下文中的哈希环可以等同替换为哈希信息,本申请的实施例对此不作限定。
通常一致性哈希算法,作为分布式计算的数据分配参考,与传统的取模,划段相比具有一定的优势。
传统的取模方式:
例如有10个数据,3个节点,如果按照取模的方式,即:
Node a:0,3,6,9;
Node b:1,4,7;
Node c:2,5,8;
当增加一个节点时,数据分布就变更为:
Node a:0,4,8;
Node b:1,5,9;
Node c:2,6;
Node d:3,7;
根据传统取模的方式可知,当集群中增加一个节点Node d时,数据3,4,5,6,7,8,9的分布都需要做迁移。当集群中存在更多的数据时,增加一个节点就会有更大的数据迁移,从而导致工作量以及成本过高。
采用一致性哈希算法,对节点和数据都只需要做一次哈希运算,然后通过比较节点和数据的哈希值,确定数据和节点哈希值最相近的节点作为存放节点。由此可以保证当节点增加或者减少时,产生影响的数据最少。
例如,依旧以有10个数据,3个节点为例,首先分别计算出10个数据的哈希值:
0:192;1:196;2:200;3:204;4:208;5:212;6:216;7:220;8:224;9:228;
再分别对于三个节点,计算出每个节点的哈希值:
Node a:203;
Node g:209;
Node z:228。
此时,比较两者哈希值的大小,如果数据的哈希值大于228,则数据存放到前面哈希值为203的节点,相当于整个哈希值构成了一个哈希环。对应的映射结果:
Node a:0,1,2;
Node g:3,4;
Node z:5,6,7,8,9。
此时,当集群中加入节点Node n时,只需要先计算出Node n的哈希值,例如:Noden:216,这时相应的数据就会做迁移。如,
Node a:0,1,2;
Node g:3,4;
Node n:5,6;
Node z:7,8,9。
通过采用一致性哈希算法,若集群中增加一个节点,例如,上述集群中增加一个节点Node n,采用一致性哈希算法之后则10个数据中可以只需要把数据5和6进行迁移,其它数据可以保持原有数据分布节点。
因此,与传统取模的方式相比,通过一致性哈希算法的数据分布,在节点数量增加或者减少时,其数据的迁移规模相对较小。
哈希环是指分布式存储系统中对物理节点中的数据块的编号进行哈希计算,获得数据块的哈希值,并以该哈希值进行排序获得的一个环状逻辑结构。
应理解,本申请实施例中的标识可以为版本号,也就是说,哈希信息的标识可以为哈希信息的版本号。例如,哈希信息的标识可以为数字,例如N个哈希信息的标识可以依次为1、2、3…N。标识还可以为其他形式,例如,可以英文字母等,本申请实施例并不对此做限定。在下文中,仅以标识为节点编号举例进行相关说明,下文中的节点编号可以等同替换为标识。但本申请实施例并不限于此。
应注意,本申请实施例中的节点可以是物理节点,也可以是虚拟节点。本申请实施例并不对此作限定。在本申请的实施例中,如图5所示,第一下载节点需要从分布式的查询服务器系统中确定查询下载镜像文件1的第一上游下载节点的信息。与上述方法类似,可以把镜像文件看作数据,把查询服务器看作存放节点,通过比较存放节点和数据的哈希值,确定数据和节点哈希值最相近的节点作为存放节点。即通过比较镜像文件和查询服务器的哈希值,例如,通过比较该镜像文件的文件名的哈希值和N个节点的哈希值,确定与该镜像文件的文件名的哈希值最接近的哈希值所对应的节点,该节点作为该镜像文件的查询服务器。即确定向第一节点发送第一上游下载节点的信息的查询服务器。
在本申请的实施例中,第一下载节点首先需要从分布式的查询服务器系统中,确定用于查询第一上游下载节点的信息的查询服务器,进而从该查询服务器中查询第一上游下载节点的信息。
例如,首先第一下载节点根据一致性哈希算法,分别计算出每个节点的哈希值以及镜像文件1的哈希值,然后将镜像文件1的哈希值与每个节点的哈希值进行比较,从而找到哈希值最接近的节点。
由于N个节点构成分布式的查询服务器系统,因此复用该节点的查询服务器即为用于查询第一上游下载节点的信息的查询服务器。
例如,如图5所示,下载的镜像文件1的哈希值为18,节点1的哈希值为10、节点2的哈希值为15、节点3的值为22、节点4的哈希值为33,节点5的哈希值为50,节点6的哈希值为60,节点7的哈希值为70。通过比较哈希值的大小,与镜像文件1的哈希值18最接近的为节点2的哈希值15,因此最终确定节点2作为镜像文件1的查询服务器。
本申请的实施例中,提供了一种在集群中镜像文件下载的方法,具体地通过查询服务器查找各个节点的上游下载节点信息,使得集群中的镜像文件的下载由采用中心下载方式,即全部节点均在文件服务器中下载镜像文件的下载方式,变为基于文件服务器和其它节点提供的文件源的镜像文件的下载方式,其中分布式的查询服务器系统中不同的镜像文件可以具有不同的查询服务器,确保了查询服务器功能被分布到多个查询服务器上执行,不存在单点性能的瓶颈问题。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图6是根据本申请一个实施例的集群中镜像文件下载的一种实现方式示意框图。
在本申请的实施例中,上述集群中镜像文件下载的方法能够在Docker环境下使用。在Docker环境下,Docker Deamon(守护进程)作为Docke架构中的主体部分以一个后台服务形式运行在每一个Docker节点上,用户使用Docker Client(用户端)与Docker Daemon(守护进程)建立通信。每个节点通过Docker Daemon从Docker Registry Server(注册服务器)使用Docker Registry Protocol(注册协议)下载文件。
应用本申请实施例可以不需要对Docker Daemon的源代码进行修改,能够通过一种非侵入式的集成方式。非侵入式的集成方法指用户代码并不需要过多的依赖框架,当重构代码设计时,之前的代码仍然可以运用。因此,非侵入式的集成方法与侵入式的集成方法相比相对成本较小,同时对于源代码的利用率较高。
本申请的集群中镜像文件下载的方法可以通过如图6所示的架构,非侵入式的集成到Docker下载环境,即本申请的镜像文件下载的方法与Docker系统集成仅需要修改配置,例如,修改Docker Registery API Endpointa(注册表应用程序编程接口端点)配置,而不需要修改Docker相关组件的源代码。
在本申请的实施例中,可以在每个节点610处安装数据下载服务(Data DownloadService,DDS)文件。下载节点上的Docker Deamon(守护进程)用于接收客户端发来的数据下载请求,然后Docker Deamon将接收到的客户端发送的数据请求发送至DDS进行处理。
具体地,Docker Daemon可以使用DDS服务提供的Docker Registery APIEndpoint,通过这个Docker Registery API Endpoint,DDS服务模拟Docker RegisteryServer向Docker Daemon提供Docker Registery Server服务。
DDS可以包括4个模块:Docker Registry Proxy(注册代理)、DDS Service Handle(服务管理)、File Tracker(文件追踪)和Node Manager(节点管理)。
Docker Registry Proxy:Docker Registry Proxy通过Docker Registry APIEndpoint为Docker Daemon提供镜像文件的下载服务。当Docker Registry Proxy通过Docker Registry API Endpoint接到从Docker Daemon发来请求时,如果该请求不是Docker镜像文件的下载请求,例如请求为元数据(Metadata)相关请求,Docker RegistryProxy会将请求转发到Docker Registry Server(注册服务器)620由Docker RegistryServer(注册服务器)620进行处理;如果该请求是Docker镜像文件的下载请求时,则DockerRegistry Proxy会调用DDS Servicec Handler提供镜像文件的下载服务。
需要说明的是,在本申请的实施例中,例如,图6中节点610中Docker Deamon可以接收客户端发送的数据下载请求,Docker Deamon可以将数据下载请求发送DockerRegistry Proxy,Docker Registry Proxy对数据下载请求进行选择,若数据下载请求为镜像文件的查询请求则将该请求发送至DDS Service Handle。
应理解,Docker Registry Proxy的主要功能在于将Docker Daemon接收到的客户端的数据下载请求进行筛选。若该客户端的数据下载请求为镜像文件下载请求,则将该镜像文件下载请求发送至DDS Service Handler。若为其它数据的下载请求,则将客户端的请求发送至文件服务器进行数据下载处理,Docker Registry Server(注册服务器)可以为文件服务器。
DDS Service Handler:DDS Servicec Handler模块实现本申请实施例中的,第一下载节点确定上游下载节点,并且从上游下载节点下载镜像文件的功能;
File Tracker:查询服务器的功能通过节点上的File Tracker模块来实现,查询服务器可以为复用节点提供查询服务器的功能。
Node Manager:Node Manager提供了基于ETCD的节点注册服务。通过这个服务,集群中每个节点将本节点的IP地址和端口注册到ETCD这样的集中存储服务器630上。当需要下载特定文件时,在分布式查询服务器系统中节点可以基于这个完整列表信息使用一致性哈希算法计算出其中某个节点提供查询服务的查询服务器。
应理解,Node Manager提供了基于ETCD的节点注册服务,对于集中式的查询服务器,Node Manager的功能是关闭的。集群中的节点都通过集中式的查询服务器来查询上游下载节点的信息。
通过上述本申请的实施例,为Docker环境提供了一个非侵入式的镜像文件下载的方法。
应理解,非侵入式的集成意味Docker Daemon源代码不需要修改,仅需要修改配置。Docker Daemon需要访问Docker Registry Server服务器下载镜像文件,DockerRegistry Server服务器的地址是配置在Docker Daemon的参数中的。在本申请的实施例中DDS相当于是一个模拟的Docker Registry Server服务器,然后修改Docker Daemon的参数让它访问本申请中模拟的服务器,最终通过DDS文件来处理数据请求。因此不需要修改Docker Daemon源代码,提供了一种Docker环境下非侵入式的集成方式。
需要说明的是,例如,第一下载节点和第一上游下载节点的功能可以通过节点上安装的DDS文件中的DDS Service Handler模块实现,查询服务器的功能可以通过DDS文件中的File Tracker模块实现。
在本申请的实施例中,集群中镜像文件下载的方法也可以在自动化容器操作的开源平台Kubernetes集群中实现。
本申请的实施例用于集群环境的镜像文件的下载,例如,Docker中的镜像文件下载,它还可以用于集群环境中多个节点下载其他特定的同一镜像文件,例如虚拟机镜像下载,大数据运行时刻Runtime下载,本申请的实施例对此不作限定。
在本申请的实施例中,将集群中镜像文件下载的方法应用于Docker环境下,不仅解决了目前数据中心环境下的镜像文件下载采用中心下载的方式而存在的单点故障与单点性能瓶颈问题,同时本申请为Docker环境提供了一种非侵入式的集成方式,不会影响现有Docker开源系统,从而提高了Docker系统的利用率,减少了成本。
应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
上文详细描述了根据本申请实施例的集群中镜像文件下载的方法,在本申请中集群环境下的镜像文件的下载方法,下载的时间复杂度由O(N)下降到了O(LogN),通过查询服务器来追踪集群中各个节点已下载的文件信息列表,并根据其它节点的请求基于一定的选择策略来选择其上游下载节点。应理解,本申请实施例的节点、查询服务器可以执行前述本申请实施例的各种方法,即以下各种产品的具体工作过程,可以参考前述方法实施例中的对应过程。
图7示出了根据本申请实施例的节点700的示意性框图(图7中的节点可以是图1中的任意一个节点)。该节点700可以对应于各方法实施例中N个节点中的任意一个节点,可以具有方法中的节点的任意功能。
如图7中的节点700为集群中的节点,该集群包括文件服务器和N个节点,该文件服务器为该N个节点中的至少一个节点提供该镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务,其中,N为大于1的正整数。
如图7所示,该节点700包括服务端模块710和数据下载服务模块720。
服务端模块710,用于向该数据下载服务模块发送该镜像文件的下载请求。
数据下载服务模块720,用于根据该镜像文件的下载请求,从查询服务器获取第一上游下载节点的信息,其中,该第一上游下载节点是基于均衡下载策略在下载源集合中确定的为该节点700提供该镜像文件的下载服务的节点,下载源集合包括文件服务器和N个节点中下载了该镜像文件的至少一个节点;以及从该第一上游下载节点下载该镜像文件。
应理解,节点700包括的服务端模块710和数据下载服务模块720的功能可以在同一个模块中执行,即服务端模块和数据下载服务模块可以包括在同一个模块中,服务端模块710的功能主要在于接收客户端发送的数据下载请求,并将全部的数据下载请求接收并发送至数据下载服务模块720。
应理解,在本申请实施例中服务端模块710可以为图7中的Docker Deamon,数据下载服务模块720可以为DDS文件。
可选地,均衡下载策略可以包括第一下载条件,该第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值。
可选地,均衡下载策略还包括第二下载条件,该第二下载条件为该第一下载节点已下载该镜像文件的大小小于该第一上游下载节点已下载该镜像文件的大小。
可选地,数据下载服务模块720还用于:
向该查询服务器发送第一下载信息,该第一下载信息为该节点700下载该镜像文件的下载信息,该第一下载信息用于该查询服务器更新该查询服务器中的该镜像文件的下载信息列表,该下载信息列表包括该镜像文件在N个节点的下载信息。
可选地,数据下载服务模块720还用于:
向查询服务器发送查询请求,该查询请求用于查询该第一上游下载节点的信息。
可选地,该查询服务器为集中式的查询服务器,该集中式的查询服务器为N个节点中的特定节点。
可选地,该集中式的查询服务器采用主备模式。
可选地,该N个节点形成分布式的查询服务器系统,该查询服务器为该分布式的查询服务器系统中的查询服务器。
可选地,数据下载服务模块720还用于:
从该分布式的查询服务器系统中确定用于查询该第一上游下载节点的查询服务器。
可选地,集群还包括存储服务器,该存储服务器包括该N个节点的列表信息;数据下载服务模块720具体用于:
从该存储服务器中获取该N个节点的列表信息;
根据该列表信息,从该分布式的查询服务器系统中确定用于查询该第一上游下载节点的查询服务器。
可选地,数据下载服务模块720还用于:
根据该列表信息,采用一致性哈希算法确定该查询服务器。
可选地,数据下载服务模块720还用于:
向该存储服务器发送注册请求,该注册请求包括该节点的IP地址以及注册端口号。
可选地,该列表信息包括该N个节点的IP地址以及注册端口号。
可选地,该第一下载信息包括该镜像文件的文件名和该节点700已下载该镜像文件的文件大小。
可选地,该第一下载信息包括该镜像文件的文件名、该节点700已下载该镜像文件的文件大小、该节点700下载该镜像文件的下载时间和该节点700下载该镜像文件的上游下载节点。
可选地,该数据下载服务模块720还用于提供查询服务器功能。
可选地,在本申请的,该节点700既作为第一镜像文件的下载节点,又作为N个节点中其它节点(例如第二节点)的查询服务器。该节点700作为查询服务器时,数据下载服务模块720还包括以下功能:
确定该N个节点中的第二节点的第二上游下载节点,其中,该第二上游下载节点是下载源集合中的为该第二节点提供该镜像文件的下载服务的节点,该下载源集合包括该文件服务器和N个节点中下载了该第二镜像文件的至少一个节点;
该节点700向该第二节点发送第二上游下载节点的信息。
可选地,该数据下载服务模块720还用于:
接收第二节点发送的查询请求,该查询请求用于查询该第二上游下载节点的信息。
可选地,该数据下载服务模块720还用于:
根据下载信息列表确定第二上游下载节点,该下载信息列表包括第二镜像文件在该N个节点的下载信息。
可选地,该数据下载服务模块720还用于:
根据第一条件和第二条件确定该第二上游下载节点,其中,该第一下载条件为该第二上游下载节点的下游下载节点的个数小于预设阈值;该第二下载条件为该第二节点已下载该第二镜像文件的大小小于该第二上游下载节点已下载该第二镜像文件的大小。
可选地,该数据下载服务模块720还用于:
接收第二节点发送的第二下载信息,该第二下载信息为该第二下载节点下载第二镜像文件的下载信息;
根据第二下载信息更新第二下载节点中的该第二镜像文件的下载信息列表。
可选地,第二下载信息包括第二镜像文件的文件名和第二下载节点已下载该第二镜像文件的文件大小。
可选地,第二下载信息包括第二镜像文件的文件名、第二下载节点已下载该第二镜像文件的文件大小、该第二下载节点下载第二镜像文件的下载时间和该第二下载节点下载第二镜像文件的上游下载节点。
应理解,在本申请实施例中该节点700即为N个节点中的任意一个节点,该节点700下载的是第一镜像文件,第二节点下载的是第二镜像文件。
本申请的实施例中,提供了一种在集群中镜像文件下载的方法,具体地通过查询服务器查找各个节点的上游下载节点的信息,使得集群中的镜像文件的下载由采用中心下载方式,即全部节点均在文件服务器中下载镜像文件的下载方式,变为基于文件服务器和其它节点提供文件源的镜像文件的下载方式,使得集群中镜像文件下载的时间复杂度由O(N)下降到了O(LogN),从而降低了集群环境中下载服务资源的占用,提高了集群中的下载效率。
图8示出了根据本申请另一实施例的节点800的示意性框图(图8中的节点800可以是图1中的任意一个节点),其中具体地,示出了数据下载服务模块的结构示意图。该节点800可以对应于各方法实施例中N个节点中的任意一个节点,可以具有方法中的节点的任意功能。
如图8所示,节点800为集群中的节点,该集群包括文件服务器和N个节点,该文件服务器为该N个节点中的至少一个节点提供该镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务,其中,N为大于1的正整数。
如图8所示,该节点800可以包括:服务端模块810和数据下载服务模块820。服务端模块810可以为图7中的服务端模块710,数据下载服务模块820可以为图7中的数据下载服务模块720。在一些实施例中,数据下载服务模块820具体可以包括以下中的一个或多个模块:
代理模块821、处理模块822、FileTracker文件追踪模块823以及节点管理模块824。
应注意,代理模块821、处理模块822、FileTracker文件追踪模块823以及节点管理模块824可以不同时存在于数据下载服务模块820中。
在本申请的实施例中,服务端模块810,用于接收客户端发送的数据下载请求,并将数据下载请求发送至数据下载服务模块820。
数据下载服务模块820,用于根据服务端模块810接收到数据下载请求中的镜像文件的下载请求,从查询服务器获取第一上游下载节点的信息,其中,该第一上游下载节点是基于均衡下载策略在下载源集合中确定的为该节点800提供该镜像文件的下载服务的节点,下载源集合包括文件服务器和N个节点中下载了该镜像文件的至少一个节点;以及从该第一上游下载节点下载该镜像文件。
其中,代理模块821,用于接收服务端模块810发送的数据下载请求,并对数据请求进行筛选。当数据请求为镜像文件下载请求时,将该镜像文件下载请求发送至处理模块822。
可选地,均衡下载策略包括第一下载条件,该第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值。
可选地,均衡下载策略包括第二下载条件,该第二下载条件为该第一下载节点已下载该镜像文件的大小小于该第一上游下载节点已下载该镜像文件的大小。
可选地,处理模块822用于:
根据该镜像文件的下载请求,从查询服务器获取第一上游下载节点的信息。
可选地,处理模块822还用于:
向该查询服务器发送第一下载信息,该第一下载信息为节点800下载该镜像文件的下载信息,该第一下载信息用于该查询服务器更新该查询服务器中的该镜像文件的下载信息列表,该下载信息列表包括该镜像文件在该N个节点的下载信息。
可选地,处理模块822还用于:
向查询服务器发送查询请求,该查询请求用于查询该第一上游下载节点的信息。
可选地,处理模块822还用于:
从分布式的查询服务器系统中确定用于查询该第一上游下载节点的查询服务器。
可选地,集群中还包括存储服务器,存储服务器包括N个节点的列表信息;处理模块822还用于:从存储服务器中获取N个节点的列表信息;
根据列表信息,从分布式的查询服务器系统中确定用于查询该第一上游下载节点的查询服务器。
可选地,处理模块822还用于:
根据列表信息,采用一致性哈希算法确定该查询服务器。
可选地,处理模块822还用于:
向存储服务器发送注册请求,该注册请求包括节点的IP地址以及注册端口号。
可选地,列表信息包括该N个节点的IP地址以及注册端口号。
可选地,该第一下载信息包括该镜像文件的文件名、节点800已下载该镜像文件的文件大小、节点800下载该镜像文件的下载时间和节点800下载该镜像文件的上游下载节点。
需要说明的是,在本申请的一个实施例中,节点800可以既作为第一镜像文件的下载节点,又作为N个节点中其它节点(例如第二节点)的查询服务器。该节点800作为查询服务器时还包括查询服务器的功能。
可选地,当节点800作为N个节点中其它节点(例如第二节点)的查询服务器时,数据下载服务模块820中还可以包括FileTracker模块823。
可选地,FileTracker模块823用于:
确定该N个节点中的第二节点的第二上游下载节点,其中,该第二上游下载节点是基于均衡下载策略在下载源集合中确定的为该第二节点提供该镜像文件的下载服务的节点,下载源集合包括该文件服务器和N个节点中下载了该第二镜像文件的至少一个节点;
该节点800向第二节点发送第二上游下载节点的信息。
可选地,FileTracker模块823还用于:
接收第二节点发送的查询请求,该查询请求用于查询该第二上游下载节点的信息。
可选地,均衡下载策略包括第一下载条件,该FileTracker模块823还用于:
根据第一下载条件确定第二上游下载节点,该第一下载条件为该第二上游下载节点的下游下载节点的个数小于预设阈值。其中,所述下游下载节点即正在从该第一上游下载节点下载该镜像文件的节点。
可选地,均衡下载策略还包括第二下载条件,该FileTracker模块823还用于:
根据第一下载条件和第二下载条件确定第二上游下载节点,其中,该第二下载条件为该第二下载节点已下载该第二镜像文件的大小小于该第二上游下载节点已下载该第二镜像文件的大小。
可选地,FileTracker模块823还用于:
接收第二节点发送的第二下载信息,该第二下载信息为该第二下载节点下载第二镜像文件的下载信息;
根据第二下载信息更新第二下载节点中的该第二镜像文件的下载信息列表。
可选地,第二下载信息包括第二镜像文件的文件名和第二下载节点已下载该第二镜像文件的文件大小。
可选地,第二下载信息包括第二镜像文件的文件名、第二下载节点已下载该第二镜像文件的文件大小、该第二下载节点下载第二镜像文件的下载时间和该第二下载节点下载第二镜像文件的上游下载节点。
应理解,在本申请实施例中该节点800可以为N个节点中的任意一个节点,该节点800下载的是第一镜像文件,第二节点下载的是第二镜像文件。
可选地,当集群中的查询服务器为分布式的查询服务器系统时,数据下载服务模块820中还可以包括节点管理模块824。
节点管理模块824用于:
提供节点到存储服务器上注册的服务。
通过这个服务,集群中的节点将其IP地址和注册端口号注册到存储服务器上。在分布式的查询服务器系统中第二节点可以基于这个列表信息采用一致性哈希算法确定提供查询服务器功能的节点。
应理解,在本申请实施例中,若集群中的查询服务器为分布式的查询服务器,则数据下载服务模块820中包括节点管理模块824。若集群中的查询服务器为集中式的查询服务器,则数据下载服务模块820中不包括节点管理模块824。
本申请实施例的技术方案中,集群中的节点通过查询服务器查找该节点的上游下载节点的信息,从该上游下载节点下载该镜像文件,使得集群中的镜像文件的下载由采用中心下载方式,即全部节点在文件服务器中下载镜像文件的下载方式,变为基于文件服务器和其它节点提供文件源的镜像文件的下载方式,使集群中镜像文件下载的时间复杂度由O(N)下降到了O(LogN),从而降低了集群环境中下载服务资源的占用,提高了集群中的下载效率。
图9示出了根据本申请实施例的查询服务器900的示意性框图。该查询服务器900可以对应于各方法实施例中的查询服务器,该查询服务器900可以为集中式的查询服务器或者分布式查询服务器系统中的查询服务器。
如图9中的查询服务器900应用于集群中,该集群包括文件服务器和N个节点,该文件服务器为该N个节点中的至少一个节点提供该镜像文件的下载服务,该N个节点中下载了该镜像文件的至少一个节点为该N个节点中的至少一个节点提供该镜像文件的下载服务,其中,N为大于1的正整数。该查询服务器900包括:
处理模块910,用于基于均衡下载策略确定N个节点中的第一下载节点的第一上游下载节点,其中,该第一上游下载节点是下载源集合中的为该第一下载节点提供该镜像文件的下载服务的节点,下载源集合包括该文件服务器和N个节点中下载了该镜像文件的至少一个节点;
收发模块920,用于向该第一下载节点发送该第一上游下载节点的信息。
可选地,该收发模块920还用于:
接收第一节点发送的查询请求,该查询请求用于查询该第一上游下载节点的信息。
可选地,处理模块910具体用于:
基于均衡下载策略和载信息列表确定第一上游下载节点,该下载信息列表包括镜像文件在N个节点的下载信息。
可选地,均衡下载策略包括第一下载条件,处理模块910具体用于:
根据第一下载条件确定该第一上游下载节点,该第一下载条件为该第一上游下载节点的下游下载节点的个数小于预设阈值。其中,所述下游下载节点即正在从该第一上游下载节点下载该镜像文件的节点。
可选地,均衡下载策略还包括第二下载条件,处理模块910具体用于:
根据第一下载条件和第二下载条件确定该第一上游下载节点,其中,该第二下载条件为该第一下载节点已下载该镜像文件的大小小于该第一上游下载节点已下载该镜像文件的大小。
可选地,该收发模块920还用于:
接收第一下载节点发送的第一下载信息,该第一下载信息为该第一下载节点下载该镜像文件的下载信息;
可选地,第一下载信息包括该镜像文件的文件名和第一下载节点已下载该镜像文件的文件大小。
可选地,第一下载信息包括该镜像文件的文件名、第一下载节点已下载该镜像文件的文件大小、第一下载节点下载该镜像文件的下载时间和第一下载节点下载该镜像文件的上游下载节点。
该处理模块910还用于:
根据第一下载信息更新该查询服务器900中的该镜像文件的下载信息列表。
可选地,查询服务器900为集中式的查询服务器,集中式的查询服务器为该N个节点中的特定节点。
可选地,集中式的查询服务器可以采用主备模式。
可选地,N个节点形成分布式的查询服务器系统,查询服务器900为该分布式的查询服务器系统中的查询服务器。
本申请实施例的技术方案中,查询服务器向节点发送上游下载节点的信息,从而该节点从该上游下载节点下载镜像文件,使得集群中的镜像文件的下载由采用中心下载方式,即全部节点在文件服务器中下载镜像文件的下载方式,变为基于文件服务器和其它节点提供文件源的镜像文件的下载方式,使集群中镜像文件下载的时间复杂度由O(N)下降到了O(LogN),从而降低了集群环境中下载服务资源的占用,提高了集群中的下载效率。
图10示出了本申请另一个实施例的节点的示意性框图,包括至少一个处理器1020(例如CPU),至少一个网络接口1040或者其他通信接口,和存储器1060,这些部件之间通信连接。处理器1020用于执行存储器1060中存储的可执行模块,例如计算机程序。存储器1060可能包含高速随机存取存储器(Random Access Memory,RAM),也可能还包括非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。通过至少一个网络接口1040(可以是有线或者无线)实现与至少一个其他网元之间的通信连接。
在一些实施方式中,存储器1060存储了程序1011,处理器1020执行程序1011,用于执行前述本申请各种实施例中的方法。
例如,处理器可以用于执行上述图3中的S310查询服务器向第一下载节点发送第一上游下载节点的信息;或者S320第一下载节点从第一上游下载节点处获取镜像文件。
例如,处理器可以用于执行图4中S410第一节点向查询服务器发送下载镜像文件1的查询请求、S420查询服务器向第一节点发送查询结果、S430第一节点从文件服务器获取数据以及S440第一节点向查询服务器发送镜像文件1的下载信息。
例如,存储器1060可以存储本申请实施例中的DDS文件。处理器1020用于执行DDS文件中的各个模块,例如Docker Registry Proxy(注册代理)、DDS Service Handle(服务管理)、File Tracker(文件追踪)和Node Manager(节点管理),从而实施本申请实施例的技术方案。
例如,若节点作为下载节点,处理器1020执行DDS Service Handle模块提供本申请实施例中下载节点的功能。若节点作为查询服务器,处理器1020执行File Tracker模块提供申请实施例中的查询服务器的功能。若节点既作为下载节点,又作为其它节点的查询服务器,处理器1020执行DDS Service Handle模块提供本申请实施例中下载节点的功能,执行File Tracker模块提供查询服务器的功能。进一步地,若节点提供分布式的查询服务器的功能,处理器1020还执行Node Manager模块以实现在存储服务器上注册。
可选地,节点还可以包括存储器,该存储器可以存储程序代码,处理器调用存储器存储的程序代码,以实现该节点的相应功能。可选地,处理器和存储器可以通过芯片实现。
本申请实施例还提供了一种集群系统,包括上述节点和查询服务器。例如,集群系统可以包括上述图7、图8所示的节点以及图9所示的查询服务器。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
应理解,在本申请实施例中,术语“第一”、“第二”等仅仅是为了指代对象,并不表示相应对象间的先后次序。
应理解,在本申请实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以所述权利要求的保护范围为准。