CN115794139B - 镜像数据处理方法、装置、设备以及介质 - Google Patents
镜像数据处理方法、装置、设备以及介质 Download PDFInfo
- Publication number
- CN115794139B CN115794139B CN202310057881.XA CN202310057881A CN115794139B CN 115794139 B CN115794139 B CN 115794139B CN 202310057881 A CN202310057881 A CN 202310057881A CN 115794139 B CN115794139 B CN 115794139B
- Authority
- CN
- China
- Prior art keywords
- edge computing
- mirror image
- mirror
- image
- computing node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请提供了一种镜像数据处理方法、装置、设备以及介质,方法包括:获取多个边缘计算节点针对第一镜像发送的多个第一镜像拉取请求;根据多个第一镜像拉取请求在第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;若第一镜像查找结果指示未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为第一边缘计算节点,且确定第二边缘计算节点;在获取到中心仓库的存储地址时,通知第一边缘计算节点通过存储地址从中心仓库拉取第一镜像;将第一边缘计算节点拉取到的第一镜像存储至第一本地存储,且允许第二边缘计算节点从第一本地存储拉取第一镜像。采用本申请,可以缩减镜像拉取时的带宽成本。
Description
技术领域
本申请涉及云计算技术领域,尤其涉及一种镜像数据处理方法、装置、设备以及介质。
背景技术
目前,在云应用场景下,每个用户均可以与云服务器建立连接,以在各自的用户终端上操作并运行某个云应用(例如,云游戏X)。其中,应当理解,当这些用户在各用户终端上运行该云应用(例如,云游戏X)时,该云应用(例如,云游戏X)会以容器的方式运行在云服务器上,这里的云服务器可以为与这些用户所在地理位置区域(简称为区域)最近的边缘计算集群中的边缘计算节点。
基于此,发明人在实践中发现,当同一区域中的这些用户(例如,游戏用户A和游戏用户B)并发访问该云应用(例如,云游戏X)时,会在离这些用户(游戏用户A和用户B)所在的区域(即同一区域)最近的边缘计算集群中实时启动相应边缘计算节点上的容器,进而会在实时启动相应边缘计算节点上的容器时,并发向中心仓库请求对该云游戏X的游戏镜像的实时下载。由此可见,在同一区域中,若离游戏用户A最近的边缘计算节点为边缘计算节点C1,且在离游戏用户B最近的边缘计算节点为边缘计算节点C2,则在边缘计算节点C1和边缘计算节点C2中并发启动相应容器时,均会通过外网向中心仓库实时下载到云游戏X的游戏镜像。由于边缘计算集群部署在独立于数据中心网络(即IDC网络)的边缘计算网络中,故而在通过现有的镜像拉取方案让这些边缘计算节点实时从中心仓库并发拉取该云游戏X的游戏镜像时,势必会增加额外的带宽成本,且需要并发拉取镜像的边缘计算节点越多,也会造成更高的带宽成本的消耗。
发明内容
本申请实施例提供一种镜像数据处理方法、装置、设备以及介质,可以在并发请求镜像的过程中,降低与中心仓库进行数据交互时的带宽成本。
本申请实施例一方面提供了一种镜像数据处理方法,方法由第一子区域对应的第一镜像缓存代理执行,第一子区域为目标区域中的子区域,方法包括:
获取第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求;一个第一镜像拉取请求是一个边缘计算节点在启动第一云应用对应的云容器之前所生成且发送的;
根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;
若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,获取中心仓库的存储地址,通知第一边缘计算节点通过存储地址从中心仓库拉取第一镜像;
接收第一边缘计算节点上传的从中心仓库拉取到的第一镜像,将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
本申请实施例一方面提供了一种镜像数据处理方法,方法由第一目标边缘计算节点执行;第一目标边缘计算节点为在第一子区域中所部署的多个边缘计算节点中的任意一个边缘计算节点;多个边缘计算节点包括第二目标边缘计算节点;第二目标边缘计算节点为多个边缘计算节点中除第一目标边缘计算节点之外的边缘计算节点;第一子区域为目标区域中的子区域;
方法包括:
向第一子区域对应的第一镜像缓存代理发送针对第一云应用的第一镜像的第一目标镜像拉取请求,以使第一镜像缓存代理在将接收到的由第一目标边缘计算节点发送的第一目标镜像拉取请求和第二目标边缘计算节点针对第一镜像并发发送的第二目标镜像拉取请求,作为并发获取到的多个第一镜像拉取请求时,根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
在第一目标边缘计算节点为第一边缘计算节点时,接收第一镜像缓存代理通知下发的与目标区域相关联的中心仓库的存储地址;中心仓库的存储地址是第一镜像缓存代理在与中心仓库建立第一通信连接时所获取到的;
在通过中心仓库的存储地址从中心仓库拉取到第一镜像时,将第一镜像上传至第一镜像缓存代理,以使第一镜像缓存代理将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
本申请实施例一方面提供了一种镜像数据处理装置,装置运行在第一子区域对应的第一镜像缓存代理上,第一子区域为目标区域中的子区域,装置包括:
镜像拉取请求获取模块,用于获取第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求;一个第一镜像拉取请求是一个边缘计算节点在启动第一云应用对应的云容器之前所生成且发送的;
第一镜像查找模块,用于根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;
全局锁竞争模块,用于若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
通知拉取镜像模块,用于在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,获取中心仓库的存储地址,通知第一边缘计算节点通过存储地址从中心仓库拉取第一镜像;
镜像上传模块,用于接收第一边缘计算节点上传的从中心仓库拉取到的第一镜像,将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
其中,第一镜像缓存代理包含第一代理服务组件;多个边缘计算节点中的每个边缘计算节点均在建立的云容器中采用双网卡策略,双网卡策略包含虚拟出的用于进行镜像拉取的第一网卡;每个边缘计算节点与第一镜像缓存代理均处于第一子区域对应的局域网络中;
镜像拉取请求获取模块,具体用于在第一子区域对应的局域网络中,当第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用第一代理服务组件,基于各局域连接分别接收对应边缘计算节点针对第一云应用的第一镜像所并发发送的第一镜像拉取请求;一个局域连接为一个边缘计算节点通过对应云容器中的第一网卡与第一镜像缓存代理所建立的网络连接关系。
其中,第一镜像缓存代理包含独立于第一代理服务组件的第一容器注册服务组件;
装置还包括:
节点注册请求接收模块,用于在第一子区域对应的局域网络中,当第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用第一容器注册服务组件基于各局域连接分别接收每个边缘计算节点通过第一网卡发送的节点注册请求;一个节点注册请求中携带一个边缘计算节点的节点注册信息;
注册响应信息生成模块,用于通过第一容器注册服务组件从接收到的各节点注册请求中获取对应边缘计算节点的节点注册信息,在将获取到的各边缘计算节点的节点注册信息写入第一容器注册服务组件对应的容器注册表时,生成用于返回给各边缘计算节点的注册成功响应信息;各边缘计算节点的注册成功响应信息用于表征对应边缘计算节点具备在第一镜像缓存代理的第一本地存储中查找第一镜像的权限;
注册响应信息返回模块,用于调用第一容器注册服务组件将各边缘计算节点的注册成功响应信息返回给对应边缘计算节点。
其中,第一镜像缓存代理包含第一代理服务组件和独立于第一代理服务组件的第一容器注册服务组件;第一容器注册服务组件所对应的容器注册表中记录有多个边缘计算节点中的每个边缘计算节点的节点注册信息;
第一镜像查找模块包括:
节点标识获取单元,用于通过第一代理服务组件从多个第一镜像拉取请求中获取多个边缘计算节点的节点标识;
注册表查找单元,用于在通过第一代理服务组件调用第一容器注册服务组件获取到容器注册表时,在容器注册表中查找与多个边缘计算节点的节点标识相匹配的节点注册信息,并在容器注册表中查找到与多个边缘计算节点的节点标识相匹配的节点注册信息时,将查找到的节点注册信息所对应的边缘计算节点,作为具备在第一镜像缓存代理的第一本地存储中查找第一镜像的权限的注册边缘计算节点;
查找结果接收单元,用于接收注册边缘计算节点在第一本地存储中对第一镜像进行查找所生成的镜像查找结果,并将接收到的镜像查找结果作为第一镜像查找结果。
其中,装置还包括:
本地镜像查找成功模块,用于若第一镜像查找结果指示在第一本地存储中查找到第一镜像,则将在第一本地存储中查找到第一镜像时的本地镜像查找成功结果作为多个第一镜像拉取请求的请求响应信息,将请求响应信息分发给多个边缘计算节点中的每个边缘计算节点,以使每个边缘计算节点基于请求响应信息获取到第一镜像,且在启动第一云应用对应的云容器时,在启动的第一云应用对应的云容器中部署第一镜像。
其中,第一镜像缓存代理包含第一代理服务组件;第一代理服务组件包含用于为部署在第一子区域中的多个边缘计算节点配置全局锁的全局锁服务进程;
全局锁竞争模块包括:
锁服务进程启动单元,用于若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则将在第一本地存储中未查找到第一镜像时的镜像查找结果作为本地镜像查找失败结果,基于本地镜像查找失败结果启动第一代理服务组件中的全局锁服务进程;
竞争请求发送单元,用于在通过全局锁服务进程为多个边缘计算节点中配置全局锁时,向多个边缘计算节点中的每个边缘计算节点发送针对全局锁的竞争请求,以使每个边缘计算节点基于竞争请求竞争全局锁;
计算节点确定单元,用于接收每个边缘计算节点中竞争到全局锁的边缘计算节点返回的竞争成功响应信息,基于竞争成功响应消息,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点。
其中,目标区域包含独立于第一子区域的多个待处理子区域;多个待处理子区域为目标区域中除第一子区域之外的子区域;一个待处理子区域对应一个镜像缓存代理,且多个待处理子区域对应的多个镜像缓存代理的代理地址均存储在与第一镜像缓存代理相关联的镜像元数据中心; 一个代理地址用于映射一个镜像缓存代理;
装置还包括:
代理地址请求模块,用于在第一本地存储中未查找到第一镜像时,通过镜像元数据中心在多个镜像缓存代理的代理地址中请求第二镜像缓存代理的代理地址;第二镜像缓存代理的代理地址为镜像元数据中心基于网络延时策略所确定的;网络延时策略用于指示第二镜像缓存代理的代理地址为在多个镜像缓存代理的代理地址中,所查找到的处于目标区域中、且与第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址;
第二镜像查找模块,用于在第一镜像缓存代理通过第二镜像缓存代理的代理地址与第二镜像缓存代理建立第二通信连接时,基于第二通信连接获取第二镜像缓存代理的第一缓存地址,通知第一边缘计算节点通过第一缓存地址在第二镜像缓存代理对应的第二本地存储中查找第一镜像,且接收第一边缘计算节点返回的第二镜像查找结果。
其中,第一镜像缓存代理包含第一代理服务组件和独立于第一代理服务组件的第一容器注册服务组件;第二镜像缓存代理包含第二容器注册服务组件;镜像元数据中心中存储的第二镜像缓存代理的代理地址是由第二镜像缓存代理中的第二容器注册服务组件所发送的;
代理地址请求模块包括:
地址获取请求发送单元,用于在第一本地存储中未查找到第一镜像时,调用第一代理服务组件向镜像元数据中心发送地址获取请求;地址获取请求用于指示镜像元数据中心基于网络延时策略,将在多个镜像缓存代理的代理地址中,查找到的处于目标区域中、且与第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址,作为第二镜像缓存代理的代理地址;
代理地址接收单元,用于调用第一代理服务组件接收镜像元数据中心基于地址获取请求返回的第二镜像缓存代理的代理地址。
其中,第二镜像缓存代理包含不同于第二容器注册服务组件的第二代理服务组件;
装置还包括:
连接请求发送模块,用于调用第一镜像缓存代理中的第一代理服务组件,基于第二镜像缓存代理的代理地址,向第二镜像缓存代理发送连接建立请求,以使第二镜像缓存代理在调用第二代理服务组件对连接建立请求进行解析,得到第一镜像缓存代理的代理地址时,根据第一镜像缓存代理的代理地址生成用于向第一镜像缓存代理发送的连接响应信息;
连接响应接收模块,用于通过第一代理服务组件接收第二镜像缓存代理中的第二代理服务组件返回的连接响应信息,基于连接响应信息建立用于在第一代理服务组件与第二代理服务组件之间进行数据交互的长连接,将建立的长连接作为第一镜像缓存代理与第二镜像缓存代理之间的第二通信连接。
其中,第二镜像查找模块包括:
缓存地址接收单元,用于调用第一代理服务组件通过第二通信连接,接收第二代理服务组件返回的第二镜像缓存代理的第一缓存地址;
通知消息下发单元,用于调用第一代理服务组件将第二镜像缓存代理的第一缓存地址添加到第一缓存地址通知消息,将第一缓存地址通知消息下发给具备镜像拉取权限的第一边缘计算节点,以使第一边缘计算节点基于第一缓存地址通知消息解析到第二镜像缓存代理的第一缓存地址时,通过第二镜像缓存代理的第一缓存地址从第二镜像缓存代理的第二本地存储中查找第一镜像,得到第二镜像查找结果;
镜像结果接收单元,用于接收第一边缘计算节点返回的第二镜像查找结果。
其中,装置还包括:
第二本地查找失败模块,用于若第二镜像查找结果指示在第二本地存储中未查找到第一镜像,则通知通知拉取镜像模块执行在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,基于第一通信连接获取中心仓库的存储地址,且通知第一边缘计算节点通过中心仓库的存储地址从中心仓库拉取第一镜像的步骤。
其中,多个镜像缓存代理的代理地址中包含第二镜像缓存代理的代理地址和待遍历镜像缓存代理的代理地址;待遍历镜像缓存代理为在多个待处理子区域对应的多个镜像缓存代理中所确定的除第二镜像缓存代理之外的镜像缓存代理;
装置还包括:
遍历地址获取模块,用于若第二镜像查找结果指示在第二本地存储中未查找到第一镜像,则获取镜像元数据中心所存储的待遍历镜像缓存代理的代理地址,
缓存地址获取模块,用于在第一镜像缓存代理通过待遍历镜像缓存代理的代理地址与待遍历镜像缓存代理建立第三通信连接时,基于第三通信连接获取待遍历镜像缓存代理的第二缓存地址;
通知遍历查找模块,用于通知第一边缘计算节点通过第二缓存地址在待遍历镜像缓存代理对应的第三本地存储中查找第一镜像,且接收第一边缘计算节点返回的第三镜像查找结果。
其中,装置还包括:
区域镜像查找失败模块,用于若第三镜像查找结果指示在第三本地存储中均未查找到第一镜像,则在确定部署在目标区域中的所有镜像缓存代理均不存在第一镜像时,通知通知拉取镜像模块执行在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,基于第一通信连接获取中心仓库的存储地址,且通知第一边缘计算节点通过中心仓库的存储地址从中心仓库拉取第一镜像的步骤。
其中,第一镜像缓存代理包含种子文件生成中心和种子文件中心;在第一镜像缓存代理的第一本地存储中存储有与第一边缘计算节点相关联的第二云应用的第二镜像时,种子文件中心用于存储由第一边缘计算节点通过第一点对点代理上报的第二镜像的镜像元数据信息;镜像元数据信息包括存储有第二镜像的第一边缘计算节点的节点地址;
装置还包括:
种子文件查找模块,用于通过种子文件生成中心接收第二边缘计算节点通过第二点对点代理发送的针对第二镜像的第二镜像拉取请求,基于第二镜像拉取请求在种子文件生成中心查找第二镜像的种子文件;
文件查找失败模块,用于若在种子文件生成中心未查找第二镜像的种子文件,则通过种子文件生成中心在第一本地存储中查找第二镜像;
中心地址获取模块,用于当在第一本地存储中查找到第二镜像时,通过种子文件生成中心获取种子文件中心的中心地址 ,且基于种子文件中心的中心地址和第二镜像生成第二镜像的种子文件;
种子文件返回模块,用于将第二镜像的种子文件返回给第二边缘计算节点,以使第二边缘计算节点通过第二点对点代理对第二镜像的种子文件进行文件解析,且在解析得到种子文件中心的中心地址时,通过中心地址与种子文件中心建立第四通信连接;第四通信连接用于指示第二边缘计算节点中的第二点对点代理在从种子文件中心获取第一边缘计算节点的节点地址时,基于第一边缘计算节点的节点地址从第一边缘计算节点上拉取第二镜像。
其中,第一镜像缓存代理包含独立于中心文件生成中心的镜像配置代理;与中心仓库相关的镜像预热系统包括镜像制作设备、镜像通知服务器、镜像配置服务器;镜像制作设备用于向中心仓库上传制作的第二云应用的第二镜像;镜像通知服务器用于在探测到中心仓库上存在针对第二镜像的上传操作时,向镜像配置服务器推送第二镜像;
装置还包括:
预热镜像信息接收模块,用于通过镜像配置代理接收镜像配置服务器发送的预热镜像信息;预热镜像信息是镜像配置服务器在确定由镜像通知服务器所推送的第二镜像属于预热类型的镜像时所生成的;
预热下载至本地模块,用于通过镜像配置代理获取预热镜像信息中的第二镜像,将第二镜像下载至第一本地存储。
本申请实施例一方面提供了一种镜像数据处理装置,装置运行在第一目标边缘计算节点上;第一目标边缘计算节点为在第一子区域中所部署的多个边缘计算节点中的任意一个边缘计算节点;多个边缘计算节点包括第二目标边缘计算节点;第二目标边缘计算节点为多个边缘计算节点中除第一目标边缘计算节点之外的边缘计算节点;第一子区域为目标区域中的子区域;
装置包括:
镜像拉取请求发送模块,用于向第一子区域对应的第一镜像缓存代理发送针对第一云应用的第一镜像的第一目标镜像拉取请求,以使第一镜像缓存代理在将接收到的由第一目标边缘计算节点发送的第一目标镜像拉取请求和第二目标边缘计算节点针对第一镜像并发发送的第二目标镜像拉取请求,作为并发获取到的多个第一镜像拉取请求时,根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
存储地址接收模块,用于在第一目标边缘计算节点为第一边缘计算节点时,接收第一镜像缓存代理通知下发的与目标区域相关联的中心仓库的存储地址;中心仓库的存储地址是第一镜像缓存代理在与中心仓库建立第一通信连接时所获取到的;
镜像上传模块,用于在通过中心仓库的存储地址从中心仓库拉取到第一镜像时,将第一镜像上传至第一镜像缓存代理,以使第一镜像缓存代理将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
其中,第一目标边缘计算节点在建立的云容器中采用双网卡策略,在第一云应用为云游戏时,双网卡策略包含虚拟出的用于指示第一目标边缘计算节点拉取云游戏的游戏镜像的第一网卡,和用于指示第一目标边缘计算节点执行云游戏的游戏业务的第二网卡;云游戏的游戏镜像为第一镜像;
装置还包括:
请求响应返回模块,用于通过第一网卡接收第一镜像缓存代理针对第一本地存储中所存储的第一镜像返回的请求响应信息,
云容器启动模块,用于基于请求响应信息获取到第一镜像,在启动第一云应用对应的云容器时,在启动的第一云应用对应的云容器中部署第一镜像;
访问请求接收模块,用于通过第二网卡接收第一镜像对应的游戏客户端针对第一云应用发送的云应用访问请求,从云应用访问请求中获取第一云应用的游戏标识,基于第一云应用的游戏标识控制部署有第一镜像的云容器与游戏客户端建立游戏业务对应的业务连接;
触发事件接收模块,用于通过第二网卡接收游戏客户端基于业务连接发送的针对第一云应用执行的触发事件流,获取触发事件流对应的音视频数据,将音视频数据对应的音视频码流作为第一云应用的业务数据流,通过第二网卡将业务数据流下发至运行游戏客户端的游戏终端,以使游戏终端通过游戏客户端输出与业务数据流相关联的音视频数据。
本申请实施例一方面提供了一种计算机设备,包括存储器和处理器,存储器与处理器相连,存储器用于存储计算机程序,处理器用于调用计算机程序,以使得该计算机设备执行本申请实施例中上述一方面提供的方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序适于由处理器加载并执行,以使得具有处理器的计算机设备执行本申请实施例中上述一方面提供的方法。
根据本申请的一个方面,提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行上述一方面提供的方法。
本申请实施例所涉及的第一镜像缓存代理为某个子区域(例如,第一子区域,该第一子区域可以为地域A1)中的镜像缓存代理,这里的第一子区域可以为某个区域(例如,目标区域,该目标区域可以为区域A)的子区域。基于此,在该第一子区域中的第一镜像缓存代理,获取到并发请求同一云游戏(即第一云应用)的游戏镜像(即第一镜像)多个边缘计算节点发送的多个第一镜像拉取请求的时候,可以针对获取到的多个第一镜像拉取请求优先在该第一镜像缓存代理自己的本地(即第一本地存储)查找是否有该第一镜像,如果未查找到,则说明本地没有,此时,该第一镜像缓存代理就需要通过全局锁来限制该多个边缘计算节点的镜像拉取权限,比如,本申请实施例可以在多个边缘计算节点中,允许竞争到全局锁的那个边缘计算节点(即前述第一边缘计算节点)穿透到中心仓库优先拉取到第一镜像,这样,后续其他边缘计算节点(即第二边缘计算节点)就可以等穿透到中心仓库的那个边缘计算节点(即前述第一边缘计算节点)将该第一镜像拉取到该第一镜像缓存代理的第一本地存储时,直接从该第一本地存储中拉取到该第一镜像。这意味着对于和第一边缘计算节点同步发送第一镜像拉取请求的其他边缘计算节点(例如,前述第二边缘计算节点)而言,无需也不会直接与中心仓库进行数据交互,而是直接与部署在同一子区域(即第一子区域)的第一镜像缓存代理进行数据交互,从而可以在这些边缘计算节点进行镜像拉取的过程中,从根源上降低镜像拉取时的带宽成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种针对云应用的镜像数据处理系统的架构图;
图2是本申请实施例提供的一种进行镜像拉取的交互场景示意图;
图3是本申请实施例提供的一种镜像数据处理方法的流程示意图;
图4是本申请实施例提供的一种进行节点注册的场景示意图;
图5是本申请实施例提供的一种查找第一镜像的场景示意图;
图6是本申请实施例提供的另一种镜像数据处理方法的流程示意图;
图7是本申请实施例提供的一种采用双网卡策略实现镜像拉取的场景示意图;
图8是本申请实施例提供的一种在边缘计算节点集群中实现节点之间进行数据交互的场景示意图;
图9是本申请实施例提供的一种进行镜像预热的场景示意图;
图10是本申请实施例提供的一种镜像分批下载的场景示意图;
图11是本申请实施例提供的一种镜像数据处理方法的交互时序图;
图12是本申请实施例提供的一种镜像数据处理装置的结构示意图;
图13是本申请实施例提供的另一种镜像数据处理装置的结构示意图;
图14是本申请实施例提供的一种计算机设备的结构示意图;
图15是本申请实施例提供的一种镜像数据处理系统的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请实施例涉及云计算(cloud computing)和云应用。其中,云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。作为云计算的基础能力提供商,会建立云计算资源池(简称云平台,一般称为IaaS(Infrastructure as aService,基础设施即服务)平台,在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备、网络设备。
云应用作为云计算的子集,是云计算技术在应用层的体现,云应用的工作原理是把传统软件本地安装、本地运算的使用方式变为即取即用的服务,通过互联网或局域网连接并操控远程服务器集群,完成业务逻辑或运算任务的一种新型应用。云应用的优点是云应用的应用程序(如云应用客户端)可以以容器的方式运行在服务器端(即云服务器)中,这里的服务器端(即云服务器)可以为部署在边缘计算集群中的边缘计算节点,这样,部署在边缘计算集群中的这些边缘计算节点可以用于执行云应用的计算工作,比如数据渲染,然后将云应用的计算结果传输给终端设备中的用户客户端进行显示,用户客户端可以采集用户的操作信息(也可以称为云应用的对象操作数据,或者可以称为云应用的输入事件数据),将这些操作信息传输给在边缘计算节点的容器中运行的云应用客户端,以实现由边缘计算节点对云应用的操控。
其中,本申请实施例中所涉及的云应用客户端均为运行在服务器端(即边缘计算节点)的云应用实例,而用户客户端可以是指支持安装在终端设备中,且能够为用户提供对应的云应用体验服务的客户端,简单来说,用户客户端可以用于输出对应云应用客户端的云应用展示页面,也可以称为云应用用户客户端,后面不再对此进行解释;云应用可以包括云游戏、云教育、云会议、云呼叫以及云社交等等,其中,云游戏作为云应用中的典型,近年来受到越来越多的关注。
云游戏(Cloud gaming)又可以称为游戏点播(gaming on demand),是一种以云计算技术为基础的在线游戏技术。云游戏技术使图形处理与数据运算能力相对有限的轻端设备(thin client)能运行高品质游戏。在云游戏业务场景下,游戏本身并不在用户所使用的游戏终端,游戏终端中仅运行用户客户端,运行在该游戏终端终的用户客户端也可以称之为游戏客户端,真正的游戏应用程序(如云游戏客户端)是在服务器端(即边缘计算节点)中运行,并由服务器端(即边缘计算节点)将云游戏中的游戏场景渲染为音视频码流,并将渲染完成的音视频码流传输给游戏终端中的用户客户端,由用户客户端对接收到的音视频码流进行显示。游戏终端无需拥有强大的图形运算与数据处理能力,仅需拥有基本的流媒体播放能力与获取用户输入事件数据并发送给云游戏客户端的能力即可。用户在体验云游戏时,其本质是在对云游戏的音视频码流进行操作,如通过触屏、键盘鼠标、摇杆等生成输入事件数据(或者称为对象操作数据,或者可以称为用户操作指令),然后通过网络传输到服务器端(即边缘计算节点)中的云游戏客户端,以达到操作云游戏的目的。
其中,本申请所涉及的游戏终端可以是指玩家在体验云游戏时所使用的终端设备,即安装了与云游戏客户端相对应的用户客户端的终端设备,此处的玩家可以是指正在体验云游戏或者请求体验云游戏的用户;音视频码流可以包括云游戏客户端所生成的音频流和视频流,该音频流可以包括云游戏客户端在运行过程中所产生的持续的音频数据,视频流可以包括云游戏在运行过程中渲染完成的图像数据(比如游戏画面)。应当理解,在本申请实施例中,可以将渲染完成的图像数据(比如游戏画面)统称为渲染图像,如视频流可以认为是由云服务器渲染完成的一系列图像数据(比如游戏画面)所构成的视频序列,那么此时的渲染图像也可以认为是视频流中的视频帧。
在云应用(例如,云游戏)的运行过程中,涉及在服务器端(即边缘计算节点)中,通过获取到的游戏镜像所安装的云应用客户端与终端设备(例如,游戏终端)之间的通信连接(具体可以为云应用客户端与终端设备中的用户客户端之间的通信连接),云应用客户端与终端设备之间成功建立通信连接之后,在云应用客户端和终端设备之间可以传输云应用中的云应用数据流,如云应用数据流可以包括视频流(包括云应用客户端在运行云游戏的过程中所产生的一系列图像数据)和音频流(包括云应用客户端在运行云游戏过程中产生的音频数据,为便于理解,此处的音频数据和前述图像数据可以统称为音视频数据),那么可以由该云应用客户端将包含视频流和音频流的业务数据流传输至终端设备;又比如云应用数据流可以包括终端设备所获取到的针对该云应用的对象操作数据,那么可以由该终端设备将对象操作数据传输至服务器端(即边缘计算节点)的容器中所运行的云应用客户端。
下面对本申请实施例涉及的基础概念进行解释说明:
云应用实例:在服务器端(即边缘计算节点),包含完整云应用功能的一组软件集合可以称为一个云应用实例;例如,包含完整云应用功能的一组软件集合可以称为一个云应用实例。
容器:是一种内核轻量级的操作系统层的虚拟化技术。本申请实施例可以采用通用方式封装该容器运行所需要的所有文件集合,这里的所有文件集合包含在该容器中运行的应用程序代码(例如,云游戏客户端的应用程序代码)及其库和依赖项,这里的容器可以在各类操作系统中运行。
游戏镜像(或者镜像):云游戏的游戏镜像是将该云游戏在终端设备的用户客户端包制作成容器镜像,该容器镜像是指在边缘计算节点中所部署的容器(也称之为云容器)运行时所需要的所有文件集合。在本申请实施例中,一个游戏镜像的镜像大小范围可以为5-30G。
边缘计算:指在用户或数据源的物理位置或附近进行的计算,这样可以降低延迟,节省带宽。所以,本申请实施例可以将在某个区域(例如,目标区域)内进行边缘计算的各云服务器统称为边缘计算节点集群中的边缘计算节点。
P2P(Peer to Peer,对等网络): 是一种分布式应用架构,能够让分布在网络上各个角落的计算机(peer)相互提供资源并进行交互。在 P2P 网络中,每一台计算机都处于独立对等的地位,既可以作为服务器为其他计算机提供服务和资源,也可以作为服务的请求者,这一点可以去中心化,缓解中心服务器的流量压力。其中,本申请实施例所涉及的P2P网络可以包括在同一子区域中的各边缘计算节点之间所构成的对等网络,还可以包含在同一目标区域的不同子区域中的各镜像缓存代理所沟通的另一对等网络。
进一步的,请参见图1,图1是本申请实施例提供的一种针对云应用的镜像数据处理系统的架构图。如图1所示,该镜像数据处理系统可以包括中心服务设备101a、边缘缓存代理设备1000a、边缘缓存代理设备1000b、边缘缓存代理设备1000c以及边缘计算节点集群100a、边缘计算节点集群100b和边缘计算节点集群100c。
其中,可以理解的是,图1所示的边缘缓存代理设备1000a、边缘缓存代理设备1000b、边缘缓存代理设备1000c为部署在不同子区域中的边缘缓存代理,例如,边缘缓存代理设备1000a可以为部署在第一子区域(例如,子区域A)中的边缘缓存代理,边缘缓存代理设备1000b可以为部署在第二子区域(例如,子区域B)中的边缘缓存代理,边缘缓存代理设备1000c可以为部署在第三子区域(例如,子区域C)中的边缘缓存代理。应当理解,这里的第一子区域(例如,子区域A)、第二子区域(例如,子区域B)以及第三子区域(例如,子区域C)可以为同一区域(即目标区域)中的不同子区域。
其中,应当理解,在不同子区域中部署的边缘缓存代理的代理数量仅为举例说明,在实际应用场景中,可以根据需求来确定在各子区域中所部署的边缘缓存代理的具体数量,如在各子区域中所部署的边缘缓存代理的代理数量可以为一个或多个,本申请不对各子区域中所部署的边缘缓存代理的代理数量进行限定。
如图1所示,在第一子区域(例如,子区域A)中,与该边缘缓存代理设备1000a进行网络连接(例如,局域网连接1)的边缘计算节点,为图1所示的边缘计算节点集群100a中的边缘计算节点,如图1所示,该边缘计算节点集群100a中的边缘计算节点具体可以包含边缘计算节点11a、边缘计算节点11b、……、边缘计算节点11n。应当理解,在第一子区域(例如,子区域A)中,边缘计算节点11a、边缘计算节点11b、……、边缘计算节点11n可以通过前述局域网连接1与边缘缓存代理设备1000a进行数据交互(例如,可以从边缘缓存代理设备1000a上拉取运行云游戏X1所需要的游戏镜像)。
同理,如图1所示,在第二子区域(例如,子区域B)中,与该边缘缓存代理设备1000b进行网络连接(例如,局域网连接2)的边缘计算节点,为图1所示的边缘计算节点集群100b中的边缘计算节点,如图1所示,该边缘计算节点集群100b中的边缘计算节点具体可以包含边缘计算节点12a、边缘计算节点12b、……、边缘计算节点12n。应当理解,在第二子区域(例如,子区域B)中,边缘计算节点12a、边缘计算节点12b、……、边缘计算节点12n可以通过前述局域网连接2与边缘缓存代理设备1000b进行数据交互(例如,可以从边缘缓存代理设备1000b上拉取运行云游戏X2所需要的游戏镜像)。
以此类推,如图1所示,在第三子区域(例如,子区域C)中,与该边缘缓存代理设备1000c进行网络连接(例如,局域网连接3)的边缘计算节点,为图1所示的边缘计算节点集群100c中的边缘计算节点,如图1所示,该边缘计算节点集群100c中的边缘计算节点具体可以包含边缘计算节点13a、边缘计算节点13b、……、边缘计算节点13n。应当理解,在第三子区域(例如,子区域C)中,边缘计算节点13a、边缘计算节点13b、……、边缘计算节点13n可以通过前述局域网连接3与边缘缓存代理设备1000c进行数据交互(例如,可以从边缘缓存代理设备1000c上拉取运行云游戏X3所需要的游戏镜像)。
基于此,与边缘缓存代理设备1000a、边缘缓存代理设备1000b和边缘缓存代理设备1000c进行网络连接(例如,互联网连接)的中心服务器101a上可以存储不同云应用对应的容器镜像,例如,在云应用为云游戏时,可以存储上述云游戏X1的容器镜像、云游戏X2的容器镜像以及云游戏X3的容器镜像。
其中,边缘计算节点中部署的云容器(或者容器)可以运行云应用的应用程序(即云应用客户端),即在边缘计算节点集群中的任意一个边缘计算节点可以是独立的服务器,或者是多个服务器构成的服务器集群或者分布式系统,或者为提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的服务器,本申请不对边缘计算节点集群中的边缘计算节点的类型进行限定。
可以理解的是,在用户玩某个云应用(例如,云游戏时),与边缘计算节点进行数据交互的终端设备(例如,游戏终端)具体可以包括:智能手机(如Android手机、iOS手机等)、台式电脑、平板电脑、便携式个人计算机、移动互联网设备(Mobile Internet Devices,MID)以及可穿戴设备(例如智能手表、智能手环等)、车载设备等电子设备,本申请实施例不对终端设备的类型进行限定。
在如图1所示的边缘计算节点集群中的边缘计算节点中,可以运行一个或多个云容器,每个云容器内可以部署一个容器镜像,一个容器镜像包含在该云容器中运行的一个云应用客户端(此处的一个云应用客户端可以认为是一个云应用实例),一个云应用客户端对应一个用户,即一个云应用客户端可以对应一个终端设备;在边缘计算节点的云容器中所运行的一个或多个云应用客户端可以为同一个云应用,也可以为不同的云应用。例如,用户A和用户B在相同的时间体验云应用1时,此时可以在边缘计算节点中为用户A和用户B都创建一个云应用1实例;用户A和用户B在相同的时间体验不同的云应用(例如,用户A体验云应用1,用户B体验云应用2)时,此时可以在边缘计算节点中为用户A创建一个云应用1实例,为用户B创建一个云应用2实例。
其中,此处的玩家可以是指正在体验过云应用或者请求体验云应用的用户,一个终端设备中可以集成一个或多个用户客户端,每一个用户客户端都可以与云服务器2000中对应的云应用客户端建立通信连接,用户客户端与其对应的云应用客户端之间可以通过该通信连接进行数据交互。如终端设备中的用户客户端可以基于该通信连接接收云应用客户端发送的音视频码流,以解码得到相应云应用的音视频数据(例如,可以得到云应用客户端运行云应用时的图像数据和音频数据),并输出接收到的音视频数据;相应地,终端设备也可以将获取到的对象操作数据封装为输入事件数据流,以发送给对应的云应用客户端,以使云服务器端的云应用客户端可以在解封得到对象操作数据时,将其注入云应用客户端所运行的云应用,以执行相应的业务逻辑。
其中,需要说明的是,在云应用为云游戏的业务场景下,本申请实施例所涉及的计算机设备(例如,边缘计算节点)在与终端设备进行数据交互的过程中,若涉及到需要获取用户(例如,游戏用户)所使用终端设备的地理位置信息、个人报名信息、阵营对局信息(即对象游戏信息)、游戏进度信息等数据时,可以显示提示界面或者弹窗,该提示界面或者弹窗用于提示用户当前正在搜集个人所使用终端设备的地理位置信息、个人报名信息、阵营对局信息、或者游戏进度信息等数据,仅仅在获取到用户对该提示界面或者弹窗发出确认操作后,开始执行数据获取的相关的步骤,否则结束。应当理解,当本申请以上实施例运用到具体产品或技术中时,需要获得用户等对象的许可或同意,且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准。
为便于理解,下面以在边缘计算节点的云容器中部署的镜像为云游戏的游戏镜像为例,以阐述在上述镜像数据处理系统中,通过镜像缓存代理为并发请求该游戏镜像的这些边缘计算节点进行镜像拉取的具体过程进行描述。进一步的,请参见图2,图2是本申请实施例提供的一种进行镜像拉取的交互场景示意图。如图2所示的镜像P可以为上述云应用为云游戏时的游戏镜像。应当理解,当用于进行镜像制作的镜像制作设备将该游戏镜像(即图2所示的镜像P)推送至图2所示的中心仓库时,可以根据镜像制作时为当前所发布的镜像P配置的镜像配置信息,快速判断是否需要对该镜像P进行镜像预热处理。
应当理解,这里的中心仓库可以用于存储由镜像制作设备对各用户客户端包进行制作后所正式发布的容器镜像。例如,这里的容器镜像可以为能够在云容器中部署且运行的镜像,这里的镜像具体可以包含图2所示的用于在游戏终端中运行的云游戏的游戏客户端所对应的镜像P。
这里所涉及的镜像预热处理的过程是指本申请实施例可以根据前述镜像配置信息,识别该镜像P所指示的云应用(这里指云游戏)的应用类型,从而可以在识别到该应用类型属于目标应用类型(例如,该目标应用类型可以为核心游戏类型,比如,具备大规模游戏用户的云游戏的游戏类型)时,自动触发镜像预热功能,进而可以将推送至中心仓库存储的镜像P预下载到边缘镜像仓库进行缓存。这里的中心仓库可以为上述图1所对应实施例中的中心服务设备101a的中心存储数据库,该中心存储数据库可以用于存储由前述镜像制作设备所正式发布的所有云应用的容器镜像。
应当理解,这里的边缘镜像仓库是指可以用于缓存正式发布至中心仓库的各镜像(例如,前述镜像P)的本地存储数据库,为便于理解,本申请实施例可以将这里的本地存储数据库统称为镜像缓存代理的本地存储,这里的镜像缓存代理可以为上述图1所对应实施例中的边缘缓存代理设备。一个子区域可以对应一个或者多个镜像缓存代理。为便于理解,这里以一个子区域对应一个镜像缓存代理为例。这样,部署在子区域21a的镜像缓存代理可以为图2所示的镜像缓存代理A(该镜像缓存代理A可以为上述图1所对应实施例中的边缘缓存代理设备1000a)、部署在子区域21b的镜像缓存代理可以为图2所示的镜像缓存代理B(该镜像缓存代理B可以为上述图1所对应实施例中的边缘缓存代理设备1000b)。以此类推,部署在子区域22a的镜像缓存代理可以为图2所示的镜像缓存代理C(该镜像缓存代理C可以为上述图1所对应实施例中的边缘缓存代理设备1000c)、部署在子区域22b的镜像缓存代理可以为图2所示的镜像缓存代理D(该镜像缓存代理D可以为未在上述图1所对应实施例中示意出的边缘缓存代理设备1000d)。其中,可以理解的是,这里的子区域21a和子区域21b可以为同一区域(即目标区域,这里的目标区域可以为图2所示的区域2a)中的子区域,这里的子区域22a和子区域22b可以为同一区域(即另一目标区域,这里的目标区域可以为图2所示的区域2b)中的子区域。这里将不对目标区域中的各个子区域的数量进行限定。
其中,这里的边缘镜像仓库具体可以包含图2所示的部署在子区域21a中的镜像缓存代理A的本地存储、部署在子区域21a中的镜像缓存代理A的本地存储、部署在子区域21a中的镜像缓存代理A的本地存储以及子区域21a中的镜像缓存代理A的本地存储。
其中,可以理解的是,在区域2a中,部署在子区域21a的边缘计算节点集群可以包含多个边缘计算节点,这里的多个边缘计算节点具体可以包含图2所示的节点A1、节点A2。如图2所示,部署在子区域21a中的节点A1和节点A2,可以通过该子区域21a中的内网进行数据交互,以实现节点A1和节点A2之间的数据交换,比如,节点A1可以向节点A2请求交换数据。此外,如图2所示,镜像缓存代理A在通过前述自动预热功能预下载到前述镜像P的情况下,为提升镜像下载效率,节点A1和节点A2可以并发向该镜像缓存代理A请求拉取前述镜像P。
同理,可以理解的是,在区域2a中,部署在子区域21b的边缘计算节点集群可以包含多个边缘计算节点,这里的多个边缘计算节点具体可以包含图2所示的节点B1、节点B2。如图2所示,部署在子区域21b中的节点B1和节点B2,可以通过该子区域21b中的另一内网进行数据交互,以实现节点B1和节点B2之间的数据交换,比如,节点B1可以向节点B2请求交换数据。此外,如图2所示,镜像缓存代理B在通过前述自动预热功能预下载到前述镜像P的情况下,为提升镜像下载效率,节点B1和节点B2也可以并发向该镜像缓存代理B请求拉取前述镜像P。
其中,可以理解的是,在区域2b中,部署在子区域2ba的边缘计算节点集群可以包含多个边缘计算节点,这里的多个边缘计算节点具体可以包含图2所示的节点C1、节点C2。如图2所示,部署在子区域22a中的节点C1和节点C2,可以通过该子区域22a中的内网进行数据交互,以实现节点C1和节点C2之间的数据交换,比如,节点C1可以向节点C2请求交换数据。此外,如图2所示,镜像缓存代理C在通过前述自动预热功能预下载到前述镜像P的情况下,为提升镜像下载效率,节点C1和节点C2可以并发向该镜像缓存代理C请求拉取前述镜像P。
同理,可以理解的是,在区域2b中,部署在子区域22b的边缘计算节点集群可以包含多个边缘计算节点,这里的多个边缘计算节点具体可以包含图2所示的节点D1、节点D2。如图2所示,部署在子区域22b中的节点D1和节点D2,可以通过该子区域22b中的另一内网进行数据交互,以实现节点D1和节点D2之间的数据交换,比如,节点D1可以向节点D2请求交换数据。此外,如图2所示,镜像缓存代理D在通过前述自动预热功能预下载到前述镜像P的情况下,为提升镜像下载效率,节点D1和节点D2也可以并发向该镜像缓存代理D请求拉取前述镜像P。同理,对于部署在同一区域(即区域2b)中的镜像缓存代理C而言,也可以通过镜像缓存代理之间的P2P网络加速镜像下载效率。
可以理解的是,本申请实施例为例降低与中心仓库进行数据交互时的外网带宽成本,提出了限制同一镜像层并发穿透到中心仓库的方案。具体的,本申请实施例可以在同一区域2a(即目标区域)中,通过图2所示的镜像缓存代理A、镜像缓存代理B实现多级镜像缓存代理,并可以在多级镜像缓存代理之间使用P2P网络加速镜像下载效率,还可以限制同一个镜像层并发穿透到中心仓库进行镜像拉取的节点数量。比如,对于并发请求拉取镜像P的节点A1和节点A2而言,可以在这两个边缘计算节点所属P2P网络对应的镜像层中,允许竞争到全局锁的节点(例如,节点A1)作为具备镜像拉取权限的第一边缘计算节点,进而可以将该边缘计算节点集群(应当理解,同一边缘计算节点集群中的边缘计算节点之间可以构成P2P网络)中的其他边缘计算节点(例如,节点A2)作为锁定镜像拉取显示的第二边缘计算节点,这样,第一边缘计算节点在穿透到中心仓库,并将存储在中心仓库的上述镜像P拉取到该镜像缓存代理A的本地存储时,可以允许其他边缘计算节点(即第二边缘计算节点)从该镜像缓存代理A的本地存储拉取镜像,这样,第二边缘计算节点(例如,节点A2)就无需与中心仓库进行外网交互,而是直接从图2所示的镜像缓存代理A进行镜像拉取,从而可以从根源上降低与中心仓库进行数据交互时的外网带宽成本。同理,对于部署在同一区域(即区域2a)中的镜像缓存代理B而言,也可以通过镜像缓存代理之间的P2P网络,与镜像缓存代理A进行数据交互,以提升位于子区域21b中的边缘计算节点的镜像下载效率。
同理,可以理解的是,本申请实施例为例降低与中心仓库进行数据交互时的外网带宽成本,提出可以在同一区域2b(即另一目标区域)中,通过图2所示的镜像缓存代理C、镜像缓存代理D实现多级镜像缓存代理,并可以在多级镜像缓存代理之间使用P2P网络,限制同一个镜像层并发穿透到中心仓库进行镜像拉取的节点数量。比如,对于并发请求拉取镜像P的节点C1和节点C2而言,可以在这两个边缘计算节点所属P2P网络对应的镜像层中,允许竞争到全局锁的节点(例如,节点C1)作为具备镜像拉取权限的第一边缘计算节点,进而可以将该边缘计算节点集群中的其他边缘计算节点(例如,节点C2)作为锁定镜像拉取显示的第二边缘计算节点,这样,第一边缘计算节点在穿透到中心仓库,并将存储在中心仓库的上述镜像P拉取到该镜像缓存代理C的本地存储时,可以允许其他边缘计算节点(即第二边缘计算节点)从该镜像缓存代理C的本地存储拉取镜像,这样,第二边缘计算节点(例如,节点C2)就无需与中心仓库进行外网交互,而是直接从图2所示的镜像缓存代理C进行镜像拉取,从而可以从根源上降低与中心仓库进行数据交互时的外网带宽成本。同理,对于部署在同一区域(即区域2b)中的镜像缓存代理D而言,也可以通过镜像缓存代理之间的P2P网络,与镜像缓存代理C进行数据交互,以提升位于子区域22b中的边缘计算节点的镜像下载效率。
其中,节点A1与节点A2并发向镜像缓存代理A进行镜像拉取具体实现方式,以及节点B1与节点B2并发向镜像缓存代理B进行镜像拉取具体实现方式,可以参见图3-图11所对应实施例的描述。
进一步的,请参见图3,图3是本申请实施例提供的一种镜像数据处理方法的流程示意图。可以理解的是,该镜像数据处理方法由第一子区域对应的第一镜像缓存代理执行,这里的第一子区域可以为某个区域(即目标区域)中的子区域,其中,可以理解的是,该第一镜像缓存代理可以为上述图1所示的镜像数据处理系统中的边缘缓存代理设备1000a。此时,该镜像数据处理方法至少可以包括以下步骤S101至步骤S105:
步骤S101,获取第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求;
其中,一个第一镜像拉取请求是一个边缘计算节点在启动第一云应用对应的云容器之前所生成且发送的;
其中,第一镜像缓存代理可以包含第一代理服务组件;多个边缘计算节点中的每个边缘计算节点均在建立的云容器中采用双网卡策略,双网卡策略包含虚拟出的用于进行镜像拉取的第一网卡;每个边缘计算节点与第一镜像缓存代理均处于第一子区域对应的局域网络中;具体的,第一镜像缓存代理可以在第一子区域对应的局域网络中,当第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用第一代理服务组件,基于各局域连接分别接收对应边缘计算节点针对第一云应用的第一镜像所并发发送的第一镜像拉取请求;其中,一个局域连接为一个边缘计算节点通过对应云容器中的第一网卡与第一镜像缓存代理所建立的网络连接关系。
应当理解,在本申请实施例中,当用户需要玩某个云应用(例如,云游戏)时,可以通过该用户所使用的终端设备上集成的用户客户端(也可以称之为游戏客户端)登录云应用(例如,云游戏),进而可以将该云应用(例如,云游戏)的远程登录请求分配给离该用户最近的边缘计算节点集群的某个边缘计算节点,从而可以在离该用户最近的这个边缘计算节点的云容器(也可以称之为容器)中,直接启动预下载的容器镜像(也可以称之为镜像),进而可以通过该预下载的容器镜像(也可以称之为镜像)为该用户快速启动该云应用(例如,云游戏)的云应用客户端,进而可以通过离该用户最近的这个边缘计算节点中所运行的云应用客户端为该用户提供相应的云应用服务,比如,云游戏服务。
可以理解的是,本申请实施例所涉及的镜像预下载是指将相应云应用的镜像提前下载到上述边缘计算节点集群中的这些边缘计算节点上。这样,在这些边缘计算节点启动云容器时,就不需要额外进行镜像下载,而是可以直接启动预下载在相应边缘计算节点上的镜像。由此可见,这对于一些核心的、用户规模较大或者镜像大小较大的云应用而言,通过前述镜像预下载方式提升云应用启动效率。
此外,可以理解的是,一旦边缘计算节点集群中部署了大量的边缘计算节点,那么,当大量的边缘计算节点需要并发启动云容器时,就需要在启动云容器之前,同步启动镜像下载,这势必会在单位时间内迅速激增的并发请求量,从而造成这些边缘计算节点与镜像缓存代理(即前述第一镜像缓存代理)之间的带宽压力。所以,为尽可能地从根源上降低这些边缘计算节点与镜像缓存代理(即前述第一镜像缓存代理)之间的带宽压力,本申请实施例提出了可以在这些边缘计算节点并发请求同一镜像的情况下,提出了一种全新的镜像快速分发下载方案。
其中,可以理解的是,该镜像快速分发下载方案可以大致分为两类,第一类方案为镜像主动请求方案,该镜像主动请求方案是指边缘计算节点按需主动向镜像缓存代理(即前述第一镜像缓存代理)请求相应云应用的镜像。第二类方案为镜像主动下发方案,该镜像主动下发方案是指中心仓库可以基于镜像配置信息自动触发镜像预热功能,将该中心仓库中所存储的镜像主动下发(或者分发)到镜像缓存代理(即前述第一镜像缓存代理)的本地存储(即边缘镜像仓库)中进行缓存,以便于后续可以通过基于镜像配置信息自动触发镜像预下载功能,进一步将镜像缓存代理(即前述第一镜像缓存代理)的本地存储(即边缘镜像仓库)中缓存的镜像下载到相应边缘计算节点中。
为便于理解,本申请实施例以上述镜像主动请求方案为例,对步骤S101-步骤S105的具体过程进行阐述。这样,部署在第一子区域中的镜像缓存代理(即前述第一镜像缓存代理)在接收到该第一子区域中的大量边缘计算节点通过上述局域连接(即内网)并发发送的针对同一镜像的镜像拉取请求时,可以进一步执行下述步骤S102,以在该镜像缓存代理(即前述第一镜像缓存代理)的本地存储中为这些边缘计算节点进行镜像查找。
其中,可以理解的是,本申请实施例中,对于第一子区域对应的局域网络而言,可以包含但不限于部署在该第一子区域中的多个边缘计算节点,这些边缘计算节点中的每个边缘计算节点均可以与该第一镜像缓存代理建立局域连接,进而可以调用该第一镜像缓存代理中的第一容器注册服务组件基于各局域连接分别接收每个边缘计算节点通过第一网卡发送的节点注册请求;一个节点注册请求中携带一个边缘计算节点的节点注册信息;进一步的,第一镜像缓存代理可以通过第一容器注册服务组件从接收到的各节点注册请求中获取对应边缘计算节点的节点注册信息,在将获取到的各边缘计算节点的节点注册信息写入第一容器注册服务组件对应的容器注册表时,生成用于返回给各边缘计算节点的注册成功响应信息;各边缘计算节点的注册成功响应信息用于表征对应边缘计算节点具备在第一镜像缓存代理的第一本地存储中查找第一镜像的权限;进一步的,第一镜像缓存代理可以调用第一容器注册服务组件将各边缘计算节点的注册成功响应信息返回给对应边缘计算节点。
为便于理解,进一步的,请参见图4,图4是本申请实施例提供的一种进行节点注册的场景示意图。如图4所示的节点A1、节点A2和节点A3可以为部署在某个子区域(例如,第一子区域)中的边缘计算节点集群中的边缘计算节点。如图4所示的镜像缓存代理A为该第一子区域对应的第一镜像缓存代理。如图4所示,该第一镜像缓存代理(即镜像缓存代理A)包含的第一容器注册服务组件为图4所示的容器注册服务组件41a,该容器注册服务组件41a可以为用于提供节点注册服务的Docker registry组件。
如图4所示,节点A1、节点A2和节点A3与该镜像缓存代理A均处于该第一子区域对应的局域网络中,所以,当该镜像缓存代理A与节点A1、节点A2和节点A3分别通过内网建立局域连接时,可以接收这些边缘计算节点(即节点A1、节点A2和节点A3)基于相应局域连接所发送的节点注册请求。可以理解的是,在本申请实施例中,对于每个边缘计算节点(即节点A1、节点A2和节点A3中的任意一个节点)而言,均可以通过第一网卡(即eth1网卡)进行节点注册和镜像下载。
由此可见,部署在该第一子区域中的任意一个边缘计算节点(即节点A1、节点A2和节点A3中的任意一个节点),均可以通过虚拟机上的第一网卡向该镜像缓存代理A发送节点注册请求;这里的一个节点注册请求中可以携带一个边缘计算节点的节点注册信息;所以,图4所示的节点A1通过第一网卡(即eth1网卡)向该镜像缓存代理A发送节点注册请求1中,可以携带该节点A1的节点注册信息,例如,该节点A1的节点标识。同理,图4所示的节点A2通过第一网卡(即eth1网卡)向该镜像缓存代理A发送节点注册请求2中,可以携带该节点A2的节点注册信息,例如,该节点A2的节点标识。以此类推,图4所示的节点A3通过第一网卡(即eth1网卡)向该镜像缓存代理A发送节点注册请求3中,可以携带该节点A3的节点注册信息,例如,该节点A3的节点标识。
进一步的,如图4所示,该镜像缓存代理A可以通过该容器注册服务组件41a从接收到的各节点注册请求中获取到对应边缘计算节点的节点注册信息,比如,可以通过该容器注册服务组件41a获取到节点A1的节点标识、节点A2的节点标识以及节点A3的节点标识。然后,该镜像缓存代理A可以通过该容器注册服务组件41a将对应边缘计算节点的节点注册信息写入到容器注册表中,比如,该容器注册服务组件41a可以在将节点A1的节点标识、节点A2的节点标识以及节点A3的节点标识成功添加到容器注册表时,生成用于向对应边缘计算节点(即节点A1、节点A2和节点A3)返回的注册成功响应信息,这样,部署在该第一子区域中的各边缘计算节点可以通过获取到的注册成功响应信息执行上述镜像主动请求方案,以进一步执行下述步骤S102。
可以理解的是,由于本申请实施例为降低镜像主动拉取过程中,与中心仓库进行数据交互时的外网带宽成本,因此,本申请实施例可以在该镜像缓存代理A中引入全局锁机制,以通过该全局锁机制限制位于同一镜像层的这些边缘计算节点中允许一个边缘计算节点穿透到中心仓库进行镜像拉取。因此,图4所示的该镜像缓存代理A在通过该容器注册服务组件41a(即第一容器注册服务组件)将对应边缘计算节点的节点注册信息写入到本地存储42a中记录的容器注册表时,还可以进一步通过该容器注册服务组件41a(即第一容器注册服务组件)将这些边缘计算节点的节点注册信息,通过外网上传给中心仓库,以使中心仓库中的容器注册服务组件(即图4所示的容器注册服务组件41b,该容器注册服务组件41b可以在中心仓库层提供节点注册服务的另一Docker registry组件),将这些边缘计算节点的节点注册信息备份到图4所示的分布式存储集群42b。这里的分布式存储集群42b具体可以为上述中心服务数据库。这样,对于后续随机竞争到全局锁的边缘计算节点(例如,节点A1)而言,就可以通过中心服务数据库中所备份存储过该竞争到全局锁的边缘计算节点(例如,节点A1)的节点注册信息,而确定当前进行镜像拉取的这个边缘计算节点(例如,节点A1)为注册边缘计算节点,从而可以确保在该中心仓库层进行镜像拉取时的拉取成功率。
步骤S102,根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;
其中,第一镜像缓存代理包含第一代理服务组件和独立于第一代理服务组件的第一容器注册服务组件;第一容器注册服务组件所对应的容器注册表中记录有多个边缘计算节点中的每个边缘计算节点的节点注册信息;这样,第一镜像缓存代理在第一本地存储中查找第一镜像的具体过程可以描述为:第一镜像缓存代理可以通过第一代理服务组件从多个第一镜像拉取请求中获取多个边缘计算节点的节点标识;进一步的,第一镜像缓存代理可以在通过第一代理服务组件调用第一容器注册服务组件获取到容器注册表时,在容器注册表中查找与多个边缘计算节点的节点标识相匹配的节点注册信息,并在容器注册表中查找到与多个边缘计算节点的节点标识相匹配的节点注册信息时,将查找到的节点注册信息所对应的边缘计算节点,作为具备在第一镜像缓存代理的第一本地存储中查找第一镜像的权限的注册边缘计算节点;进一步的,第一镜像缓存代理可以接收注册边缘计算节点在第一本地存储中对第一镜像进行查找所生成的镜像查找结果,并将接收到的镜像查找结果作为第一镜像查找结果。
为便于理解,进一步的,请参见图5,图5是本申请实施例提供的一种查找第一镜像的场景示意图。应当理解,如图5所示的节点A1、节点A2和节点A3具体可以为上述图4所对应实施例中已在该镜像缓存代理A(即第一镜像缓存代理)中进行节点注册过的边缘计算节点。
此时,当这些边缘计算节点(即图5所示的节点A1、节点A2和节点A3)通过上述镜像主动请求方案向该镜像缓存代理A请求进行镜像下载时,该镜像缓存代理A可以接收到该节点A1、节点A2以及节点A3针对同一镜像(例如,上述图2所对应实施例中的镜像P)并发发送的多个镜像拉取请求,此时,本申请实施例可以将该镜像缓存代理A通过代理服务组件53a所获取到的每个镜像拉取请求统称为第一镜像拉取请求,进而可以通过部署在该镜像缓存代理A中的代理服务组件53a从这些第一镜像拉取请求中分别获取对应边缘计算节点的节点标识,并可以在通过独立于该代理服务组件53a的容器注册服务组件51a,从本地存储52a(即第一本地存储)中获取到上述容器注册表时,在容器注册表中查找是否存在这些边缘计算节点的节点标识,如果存在(即在容器注册表中查找到与边缘计算节点的节点标识匹配的节点注册信息),就可以将将查找到与节点注册信息相匹配的节点标识所对应的边缘计算节点,作为具备在该第一本地存储(即本地存储52a)中查找第一镜像(即前述镜像P)的权限的注册边缘计算节点,以允许这些注册边缘计算节点(即图5所示的节点A1、节点A2和节点A3)通过该权限在本地存储52a中查找该第一镜像(即前述镜像P)。
比如,可以理解的是,图5所示的镜像缓存代理A可以在确定发送第一镜像拉取请求的这些边缘计算节点为注册边缘计算节点时,进一步将该镜像缓存代理A的本地存储52a的存储地址分发给各边缘计算节点。这样,图5所示的节点A1、节点A2和节点A3可以基于接收到的该本地存储52a的存储地址,在本地存储52a中查找该第一镜像,并可以将在该本地存储52a中查找到第一镜像的本地镜像查找成功结果作为镜像查找结果分别返回给镜像缓存代理A。
可选地,图5所示的节点A1、节点A2和节点A3还可以将在本地存储52a中未查找到第一镜像的本地镜像查找失败结果作为另一镜像查找结果分别返回给镜像缓存代理A。
然后,进一步的,该镜像缓存代理A可以将接收到的这些镜像查找结果(例如,本地镜像查找成功结果或者本地镜像查找失败结果)作为第一镜像查找结果。这样,当该第一镜像查找结果为上述本地镜像查找失败结果时,可以进一步执行下述步骤S103。
可选地,本申请实施例还可以在该镜像缓存代理A确定发送各第一镜像拉取请求的边缘计算节点为注册边缘计算节点时,直接在自己的本地存储52a(即第一本地存储)中查找是否存在第一镜像(即前述镜像P),并可以将在自己的本地存储52a(即第一本地存储)中查找到该第一镜像(即前述镜像P)时的本地镜像查找成功结果作为前述第一镜像查找结果。可选地,镜像缓存代理A还可以将在自己的本地存储52a(即第一本地存储)中未查找到该第一镜像(即前述镜像P)时的本地镜像查找失败结果作为前述第一镜像查找结果,以进一步执行下述步骤S103。
由此可见,若第一镜像查找结果指示在第一本地存储中查找到第一镜像,则图5所示的该镜像缓存代理A可以将在第一本地存储(即本地存储52a)中查找到第一镜像时的本地镜像查找成功结果作为多个第一镜像拉取请求的请求响应信息,以将请求响应信息分发给多个边缘计算节点中的每个边缘计算节点(即图5所示的节点A1、节点A2和节点A3),以使每个边缘计算节点基于请求响应信息获取到第一镜像,且在启动第一云应用对应的云容器时,就可以在启动的第一云应用对应的云容器中部署第一镜像。
步骤S103,若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
其中,第一镜像缓存代理包含第一代理服务组件,这里的第一代理服务组件可以为上述图5所对应实施例中的代理服务组件53a;第一代理服务组件包含用于为部署在第一子区域中的多个边缘计算节点(例如,上述节点A1、节点A2和节点A3)配置全局锁的全局锁服务进程;具体的,若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则第一镜像缓存代理可以将在第一本地存储中未查找到第一镜像时的镜像查找结果作为本地镜像查找失败结果,并可以基于本地镜像查找失败结果启动第一代理服务组件中的全局锁服务进程;进一步的,第一镜像缓存代理可以在通过全局锁服务进程为多个边缘计算节点中配置全局锁时,向多个边缘计算节点中的每个边缘计算节点发送针对全局锁的竞争请求,以使每个边缘计算节点基于竞争请求竞争全局锁;进一步的,第一镜像缓存代理可以接收每个边缘计算节点中竞争到全局锁的边缘计算节点返回的竞争成功响应信息,进而可以基于竞争成功响应消息,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点。
应当理解,本申请实施例所涉及的全局锁服务进程所对应的全局锁机制旨在限定位于同一镜像层中的多个边缘计算节点中有且仅有一个边缘计算节点竞争到该全局锁,进而可以允许竞争到该全局锁的边缘计算节点具备优先穿透到中心仓库进行镜像拉取。
可选地,在一个或者多个可实现方式中,该全局锁机制还可以允许竞争到该全局锁的边缘计算节点优先穿透到部署在同一区域的不同子区域的边缘镜像代理进行镜像拉取。
应当理解,在本申请实施例中,部署在边缘计算节点集群的边缘计算节点(例如,上述节点A1、节点A2和节点A3)在拉取上述镜像P时,会通过内网向图5所示的镜像缓存代理A请求进行镜像拉取,如果镜像缓存代理A的本地存储52a中命中,则镜像缓存代理A可以直接返回该镜像P,如果没有命中,则会向进一步执行下述步骤S103,以向中心仓库进行远程拉取。
步骤S104,在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,获取中心仓库的存储地址,通知第一边缘计算节点通过存储地址从中心仓库拉取第一镜像;
应当理解,在本申请实施例中,中心仓库中可以包含上述图5所示的容器注册服务组件51c和用于进行镜像存储的分布式存储集群52c。部署在中心仓库中的容器注册服务组件51c,可以用于为各子区域对应的镜像缓存代理(例如,上述镜像缓存代理A)提供代理注册服务。这样,第一镜像缓存代理(例如,上述图5所对应实施例中的镜像缓存代理A)在通过外网与中心仓库建立通信连接(即第一通信连接)时,可以将获取到的该中心仓库的存储地址(即上述图5所对应实施例中的用于存储各容器镜像的分布式存储集群52c的存储地址),进一步通知下发给第一边缘计算节点,为便于理解,这里以竞争到全局锁的边缘计算节点为图5所示的节点A1为例,此时,该节点A1在作为竞争到全局锁的第一边缘计算节点而言,可以获取到该中心仓库的存储地址(即上述图5所对应实施例中的用于存储各容器镜像的分布式存储集群52c的存储地址)。然后,该节点A1可以直接通过该中心仓库的存储地址直接获取到第一镜像(例如,上述镜像P),进而可以将从中心仓库拉取到的第一镜像(例如,上述镜像P)上传给第一镜像缓存代理(例如,上述图5所对应实施例中的镜像缓存代理A),以进一步执行下述步骤S105。
步骤S105,接收第一边缘计算节点上传的从中心仓库拉取到的第一镜像,将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
应当理解,第一镜像缓存代理(例如,上述图5所对应实施例中的镜像缓存代理A)在接收到第一边缘计算节点上传的第一镜像(例如,上述镜像P)之后,可以将该第一镜像(例如,上述镜像P)存储至图5所示的本地存储52a,进而可以允许上述第二边缘计算节点(例如,图5所示的节点A2和节点A3)直接从该本地存储52a中进行镜像拉取,即此时,对于与节点A1并发请求同一镜像的节点A2和节点A3而言,并不会直接与中心镜像仓库进行数据交互,而是通过内网与该镜像缓存代理A的本地存储52a进行数据交互,这样,不仅可以降低与中心仓库进行数据交互时的带宽成本,还可以一并提升镜像拉取效率。
其中,应当理解,本申请实施例为降低多个边缘计算节点并发拉取同一个镜像时所造成的带宽压力,提出可以通过前述全局锁机制来限定任意一个边缘计算节点集群中的这些边缘计算节点中,允许一个边缘计算节点穿透到中心仓库进行镜像拉取,即这里会对部署在同一边缘计算节点集群中的这些边缘计算节点所在的镜像层加一个锁,以确保在该边缘计算节点集群中,位于同一镜像层中未竞争到全局锁的其余边缘计算节点会在等待穿透到中心仓库的边缘计算节点将镜像P拉取到该边缘缓存代理A的本地存储52a后,可以允许其余边缘计算节点进一步从该本地存储52a的命中数据,以实现镜像P的返回,这样在频繁并发拉取的场景下,可以大大减少中心仓库的带宽成本和集群存储压力。
在本申请实施例中,第一镜像缓存代理获取第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求;一个第一镜像拉取请求是一个边缘计算节点在启动第一云应用对应的云容器之前所生成且发送的;进一步的,第一镜像缓存代理可以根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;进一步的,若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则第一镜像缓存代理可以在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;进一步的,第一镜像缓存代理可以在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,获取中心仓库的存储地址,通知第一边缘计算节点通过存储地址从中心仓库拉取第一镜像;进一步的,第一镜像缓存代理可以接收第一边缘计算节点上传的从中心仓库拉取到的第一镜像,将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。由此可见,本申请实施例所涉及的第一镜像缓存代理为某个子区域(例如,第一子区域,该第一子区域可以为地域A1)中的镜像缓存代理,这里的第一子区域可以为某个区域(例如,目标区域,该目标区域可以为区域A)的子区域。基于此,在该第一子区域中的第一镜像缓存代理,获取到并发请求同一云游戏(即第一云应用)的游戏镜像(即第一镜像)多个边缘计算节点发送的多个第一镜像拉取请求的时候,可以针对获取到的多个第一镜像拉取请求优先在该第一镜像缓存代理自己的本地(即第一本地存储)查找是否有该第一镜像,如果未查找到,则说明本地没有,此时,该第一镜像缓存代理就需要通过全局锁来限制该多个边缘计算节点的镜像拉取权限,比如,本申请实施例可以在多个边缘计算节点中,允许竞争到全局锁的那个边缘计算节点(即前述第一边缘计算节点)穿透到中心仓库优先拉取到第一镜像,这样,后续其他边缘计算节点(即第二边缘计算节点)就可以等穿透到中心仓库的那个边缘计算节点(即前述第一边缘计算节点)将该第一镜像拉取到该第一镜像缓存代理的第一本地存储时,直接从该第一本地存储中拉取到该第一镜像。这意味着对于和第一边缘计算节点同步发送第一镜像拉取请求的其他边缘计算节点(例如,前述第二边缘计算节点)而言,无需也不会直接与中心仓库进行数据交互,而是直接与部署在同一子区域(即第一子区域)的第一镜像缓存代理进行数据交互,从而可以在这些边缘计算节点进行镜像拉取的过程中,从根源上降低镜像拉取时的带宽成本。
进一步的,请参见图6,图6是本申请实施例提供的另一种镜像数据处理方法的流程示意图,该镜像数据处理方法由第一子区域对应的第一镜像缓存代理执行,这里的第一子区域为目标区域中的子区域,该第一镜像缓存代理可以为上述图1所对应实施例中的边缘缓存代理设备1000a,也可以为上述图2所对应实施例中的边缘缓存代理A。其中,该第一镜像缓存代理包含第一代理服务组件和独立于该第一代理服务组件的第一容器注册服务组件。此时,该镜像数据处理方法至少可以包括以下步骤S201至步骤S210:
步骤S201,在第一子区域对应的局域网络中,当第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用第一容器注册服务组件基于各局域连接分别接收每个边缘计算节点通过第一网卡发送的节点注册请求;
其中,可以理解的是,一个节点注册请求中携带一个边缘计算节点的节点注册信息;此外,可以理解的是,本申请实施例所涉及的多个边缘计算节点中的每个边缘计算节点均在建立的云容器中采用双网卡策略,双网卡策略包含虚拟出的用于进行镜像拉取的第一网卡;每个边缘计算节点与第一镜像缓存代理均处于上述第一子区域对应的局域网络中;
为便于理解,进一步的,请参见图7,图7是本申请实施例提供的一种采用双网卡策略实现镜像拉取的场景示意图。其中,图7所示的节点A1、节点A2、节点A3和节点A4可以为部署在第一子区域对应的局域网络中的边缘计算节点。如图7所示的每个边缘计算节点均在建立的云容器中采用双网卡策略,即图7所示的节点A1、节点A2、节点A3和节点A4均包含虚拟出的用于进行镜像拉取的第一网卡(即eth1网卡)和用于进行业务执行的第二网卡(即eth0网卡)。
基于此,在这里的云应用为云游戏时,每个边缘计算节点均可以具体的包含用于拉取云游戏的游戏镜像的第一网卡,和用于执行云游戏的游戏业务的第二网卡。为便于理解,本申请实施例可以将与镜像拉取相关的第一网卡对应的数据传输通道称之为镜像拉取通道,并可以将与业务执行(例如,业务数据流下发)相关的第二网卡对应的数据传输通道称之为业务下发通道。应当理解,此时,本申请实施例可以将需要拉取的云游戏的游戏镜像称之为前述镜像(比如,第一镜像)。
为便于理解,这里以部署在第一子区域的多个边缘计算节点中的一个边缘计算节点(例如,图7所示的节点A1)为例,以阐述在该节点A1通过该双网卡策略向第一镜像缓存代理(例如,上述镜像缓存代理A)发送节点注册请求或者镜像拉取请求的具体过程。
应当理解,如图7所示,为提高用于提供容器服务的各边缘计算节点里的虚拟机收发数据(例如,相应请求的报文数据)的性能和伸缩性,解决输入输出(即I/O)虚拟化的最后一公里的问题,本申请实施例提出了一种基于硬件的SR-IOV(Single Root I/OVirtualization,单根I/O虚拟化)技术的虚拟化解决方案。通过SR-IOV技术可以允许在图7所示的节点A1的虚拟机、节点A2的虚拟机、节点A3的虚拟机、节点A4的虚拟机之间高效共享PCIe(快速外设组件互连)设备,并且它是在硬件中实现的,可以获得能够与本机性能接近的I/O性能。应当理解,如图7所示的节点A1、节点A2、节点A3和节点A4,可以为某个云游戏的GPU物理服务器通过虚拟化技术,虚拟出的4个虚拟机,一个虚拟机可以对应一个云容器,在本申请实施例中,部署在各个边缘计算节点的云容器中运行虚拟机时,可以在虚拟机与物理机之间使用SR-IOV技术,以确保每一个虚拟机都有一个第二网卡(即eth0网卡)与物理机上的VF(Virtual Function,虚拟功能)一一对应,进而可以将与第二网卡相关的业务数据流的数据流量通过对应的虚拟功能透传到图7所示的OVS硬桥,以通过物理机上的逻辑网卡(例如,bond1)将相应业务数据流的数据流量通过对应的PF(Physical Function,物理功能)发送出去。
换言之,对于节点A1而言,与该第二网卡(即etho网卡)相关联的业务下发通道具体可以包括由第二网卡、虚拟功能61b、OVS硬桥、物理机上的逻辑网卡以及第一物理功能(即PF0)等所构成的数据传输通道(也可以称之为数据传输网络);与该第一网卡(即eth1网卡)相关联的镜像拉取通道具体可以包括由第一网卡、虚拟网卡61a、软桥、虚拟网桥、宿主机上的网卡等所构成的另一数据传输通道(也可以称之为数据传输网络)。同理,对于节点A2而言,与该第二网卡(即etho网卡)相关联的业务下发通道具体可以包括由第二网卡、虚拟功能62b、OVS硬桥、物理机上的逻辑网卡以及第一物理功能(即PF0)等所构成的数据传输通道(也可以称之为数据传输网络);与该第一网卡(即eth1网卡)相关联的镜像拉取通道具体可以包括由第一网卡、虚拟网卡62a、软桥、虚拟网桥、宿主机上的网卡等所构成的另一数据传输通道(也可以称之为数据传输网络)。以此类推,对于节点A3而言,与该第二网卡(即etho网卡)相关联的业务下发通道具体可以包括由第二网卡、虚拟功能63b、OVS硬桥、物理机上的逻辑网卡以及第一物理功能(即PF0)等所构成的数据传输通道(也可以称之为数据传输网络);与该第一网卡(即eth1网卡)相关联的镜像拉取通道具体可以包括由第一网卡、虚拟网卡63a、软桥、虚拟网桥、宿主机上的网卡等所构成的另一数据传输通道(也可以称之为数据传输网络)。对于节点A4而言,与该第二网卡(即etho网卡)相关联的业务下发通道具体可以包括由第二网卡、虚拟功能64b、OVS硬桥、物理机上的逻辑网卡以及第一物理功能(即PF0)等所构成的数据传输通道(也可以称之为数据传输网络);与该第一网卡(即eth1网卡)相关联的镜像拉取通道具体可以包括由第一网卡、虚拟网卡64a、软桥、虚拟网桥、宿主机上的网卡等所构成的另一数据传输通道(也可以称之为数据传输网络)。
比如,具体的,如图7所示,对于包含第一网卡和第二网卡的节点A1而言,在通过第一网卡进行镜像拉取之前,可以将该节点A1的节点注册信息(例如,该节点A1的节点注册信息)通过第一网卡发送给第一镜像缓存代理。应当理解,由于该节点A1中的第一网卡(即eth1网卡)为云容器所对应的虚拟机里边的虚拟网卡,故而对于携带该节点注册信息的节点注册请求可以由该第一网卡通过图7所示的虚拟网卡61a传输到图7所示的软桥,进而可以将传输到软桥的节点注册请求映射到位于宿主机上的虚拟网桥(即virbro),以通过NAT(即Network Address Translation,网络地址转换)方式将映射到虚拟网桥的节点注册请求通过图7所示的网卡名称为ovs-sriov的宿主机上的网卡(即ovs-sriov网卡)给出去,以将该节点注册请求发送到前述第一镜像缓存代理。应当理解,由于节点A1上的这个第一网卡(即eth1网卡)是虚拟出来的,所以,仅能在该节点A1所处的局域网内进行请求数据包的发送,而外网所涉及的数据包并不能通过该第一网卡进行数据接收,因为该第一网卡并不能直接与外网进行映射,而是通过图7所示的第二网卡(即eth0网卡)来与外网进行映射,以通过该第二网卡将在该节点A1的云容器中所运行的某个云应用的云应用客户端的业务数据流,下发至与该云应用客户端对应的用户客户端。由此可见,对于在节点A1中的云容器中所采用的双网卡策略而言,可以通过第一网卡的镜像拉取通道,和第二网络的业务下发通道实现镜像拉取时的流量和业务执行(业务数据流下发)时的流量的相互隔离。
其中,可以理解的是,图7所示的第一物理功能(即PF0),等效于物理机上真实的eth0网卡,该PF0可以拥有完全配置或控制PCIe设备资源的能力,可以与通过虚拟化技术所虚拟出的各虚拟机上的etho网卡进行关联,以实现业务资源的数据下发。同理,图7所示的第二物理功能(即PF1),等效于物理机上真实的eth1网卡,该PF1也可以拥有完全配置或控制PCIe设备资源的能力,可以与通过虚拟化技术所虚拟出的各虚拟机上的eth1网卡进行关联,以实现镜像资源的镜像拉取。
应当理解,对于节点A1而言,可以在获取到第一镜像(例如,上述镜像P)时,在该节点A1中建立的云容器中部署该第一镜像的镜像逻辑,进而可以在该节点A1的云容器中运行前述第一镜像的云应用客户端(例如,第一云应用为云游戏时在边缘计算节点中所运行的云游戏客户端)。这样,后续该节点A1与用户所对应的终端设备(例如,游戏终端)进行数据交互时,则可以通过第二网卡(即eth0网卡)接收终端设备(例如,游戏终端)中所运行的用户客户端(即前述游戏客户端)发送的云应用访问请求,进而可以从该云应用访问请求中获取到第一云应用的应用标识(例如,游戏标识),进而可以根据该第一云应用的应用标识(例如,游戏标识)来控制与部署有该第一镜像(例如,上述镜像P)的云容器建立相应业务(例如,游戏业务)对应的业务连接,这样,该节点A1就可以通过第二网卡接收终端设备(例如,游戏终端)中所运行的用户客户端(即前述游戏客户端)基于该业务连接发送的触发事件流,进而可以根据该触发事件流所指示的对象操作数据,获取对应的音视频数据,进而可以将获取到的音视频数据进行音视频编码,以将编码得到的音视频码流作为前述业务数据流,以通过该节点A1的第二网卡将该业务数据流下发至终端设备(例如,游戏终端)中所运行的用户客户端(即前述游戏客户端),以使用户客户端(即前述游戏客户端)可以在输出与该业务数据流中的音视频数据相关联的音频数据(即播放游戏音频)的同时,能够同步展示与该音频数据同步的视频数据(即展示游戏画面)。
其中,应当理解,对于图7所示的节点A2、节点A3和节点A4所采用的双网卡策略的具体实现方式,可以一并参见对节点A1所采用的双网卡策略的描述,这里将不再继续进行赘述。
步骤S202,通过第一容器注册服务组件从接收到的各节点注册请求中获取对应边缘计算节点的节点注册信息,在将获取到的各边缘计算节点的节点注册信息写入第一容器注册服务组件对应的容器注册表时,生成用于返回给各边缘计算节点的注册成功响应信息;
其中,各边缘计算节点的注册成功响应信息用于表征对应边缘计算节点具备在第一镜像缓存代理的第一本地存储中查找第一镜像的权限;
步骤S203,调用第一容器注册服务组件将各边缘计算节点的注册成功响应信息返回给对应边缘计算节点;
其中,步骤S201-步骤S203的具体实现方式,可以参见上述图3所对应实施例中对节点注册的具体过程的描述,这里将不再继续进行赘述。
步骤S204,在第一子区域对应的局域网络中,当第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用第一代理服务组件,基于各局域连接分别接收对应边缘计算节点针对第一云应用的第一镜像所并发发送的第一镜像拉取请求;
其中,一个局域连接为一个边缘计算节点通过对应云容器中的第一网卡与第一镜像缓存代理所建立的网络连接关系。
步骤S205,根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;
步骤S206,若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
其中,可以理解的是,本申请实施例所涉及的目标区域(例如,上述图2所对应实施例中的区域2a)包含独立于第一子区域的多个待处理子区域。例如,这里的第一子区域可以为上述子区域21a,则独立于该第一子区域的多个待处理子区域具体可以包含上述图2所对应实施例中的区域21b,为便于理解,本申请实施例可以将这里的区域21b称之为第二子区域。此时,该第一子区域对应的镜像缓存代理可以为上述图5所对应实施例中的镜像缓存代理A,该第二子区域对应的镜像缓存代理可以为上述图5所对应实施例中的镜像缓存代理B,为便于理解,本申请实施例可以将第二子区域对应的镜像缓存代理(即镜像缓存代理B)称之为第二镜像缓存代理。
应当理解,对于部署在同一目标区域(即上述区域2a)中的这些镜像缓存代理而言,可以通过镜像元数据中心(例如,上述图5所对应实施例中的镜像元数据中心5d)存储各镜像缓存代理的代理地址。
比如,上述图5所对应实施例中的镜像元数据中心5d可以用于存储镜像缓存代理A的代理地址,还可以存储镜像缓存代理B的代理地址。这样,在镜像缓存代理A(即第一镜像缓存代理)的本地存储(即上述本地存储52a)中未查找到第一镜像(例如,上述镜像P)时,还可以进一步执行下述步骤S207,以允许前述竞争到全局锁的第一边缘计算节点在与该镜像缓存代理A具有网络对等关系的镜像缓存代理B的本地存储(即上述本地存储52b)中查找该第一镜像(例如,上述镜像P)。
步骤S207,在第一本地存储中未查找到第一镜像时,通过镜像元数据中心在多个镜像缓存代理的代理地址中请求第二镜像缓存代理的代理地址;
具体的,该第一镜像缓存代理(例如,上述图5所示的镜像缓存代理A)可以包含第一代理服务组件(例如,上述图5所示的代理服务组件53a)和独立于第一代理服务组件的第一容器注册服务组件(例如,上述图5所示的容器注册服务组件51a);第二镜像缓存代理(例如,上述图5所示的镜像缓存代理B)包含第二容器注册服务组件(例如,上述图5所示的容器注册服务组件51b);镜像元数据中心(例如,上述图5所示的镜像元数据中心5d)中存储的第二镜像缓存代理的代理地址是由第二镜像缓存代理中的第二容器注册服务组件所发送的;此时,第一镜像缓存代理可以在第一本地存储(例如,上述本地存储52a)中未查找到第一镜像时,调用第一代理服务组件(例如,上述图5所示的代理服务组件53a)向镜像元数据中心发送地址获取请求;这里的地址获取请求用于指示镜像元数据中心基于网络延时策略,将在多个镜像缓存代理的代理地址中,查找到的处于目标区域中、且与第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址,作为第二镜像缓存代理的代理地址;然后,该第一镜像缓存代理可以调用第一代理服务组件(例如,上述图5所示的代理服务组件53a)接收镜像元数据中心基于地址获取请求返回的第二镜像缓存代理的代理地址。
其中,可以理解的是,第二镜像缓存代理的代理地址为镜像元数据中心基于网络延时策略所确定的;这里的网络延时策略可以用于指示第二镜像缓存代理的代理地址为在多个镜像缓存代理的代理地址中,所查找到的处于目标区域中、且与第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址。
应当理解,对于同一目标区域中的不同子区域而言,可以将部署在同一目标区域,但处于不同子区域的各镜像缓存代理,构建组成上述P2P网络,以在同一目标区域的另一镜像层(即本申请可以将由不同镜像缓存代理所构成的P2P网络所在的网络层称之为另一镜像层)之间实现数据交换。比如,在同一目标区域中,比如,对于华南地区的各个一二线城市间所部署的镜像缓存代理而言,可以在各个镜像缓存代理之间通过构建的该P2P网络来进行数据的共享交换。所以,考虑到不同边缘计算节点集群之间所运行的云应用(例如,云游戏)可能会存在不同,故而可以在位于子区域21a(例如,A城市)内的镜像缓存代理A不存在上述第一镜像的情况下,可能会在该同一目标区域内的其他镜像缓存代理(例如,位于子区域21b(例如,B城市)的镜像缓存代理B)存在该第一镜像。这样,可以实现同一区域内的多级镜像缓存代理之间镜像数据的交换,进而可以大大减少向中心仓库请求该第一镜像的带宽峰值。
换言之,本申请实施例通过将带宽分散到不同子区域的镜像缓存代理的本地存储,可以充分利用边缘地区的带宽成本(例如,带宽单价)要远远地域中心仓库地区的带宽成本的这一优势,进一步节省镜像拉取时的带宽成本。此外,由于同一目标区域之间的网络延时要比到中心仓库的网络延时要低的多,进而可以在第一子区域中的边缘计算节点请求下载该第一镜像时,加速从边缘地区下载到该第一镜像(例如,前述镜像P)的镜像下载效率。
步骤S208,在第一镜像缓存代理通过第二镜像缓存代理的代理地址与第二镜像缓存代理建立第二通信连接时,基于第二通信连接获取第二镜像缓存代理的第一缓存地址,通知第一边缘计算节点通过第一缓存地址在第二镜像缓存代理对应的第二本地存储中查找第一镜像,且接收第一边缘计算节点返回的第二镜像查找结果。
具体的,可以理解的是,第二镜像缓存代理可以通过第二代理服务组件(例如,上述图5所示的代理服务组件53b)与第一镜像缓存代理的第一代理服务组件(例如,上述图5所示的代理服务组件53a)之间建立长连接,进而可以将在这两个代理服务组件之间所建立的长连接作为第一镜像缓存代理与第二镜像换了代理之间的通信连接(即第二通信连接)。然后,第一镜像缓存代理可以调用第一代理服务组件,以通过第二通信连接,接收第二代理服务组件返回的第二镜像缓存代理的第一缓存地址;这里的第一缓存地址具体是指该第二镜像缓存代理的本地存储(例如,上述图5所示的本地存储52b)的地址。进一步的,第一镜像缓存代理可以调用第一代理服务组件将第二镜像缓存代理的第一缓存地址添加到第一缓存地址通知消息,从而可以将第一缓存地址通知消息下发给具备镜像拉取权限的第一边缘计算节点(例如,上述图5所对应实施例中的节点A1),以使第一边缘计算节点基于第一缓存地址通知消息解析到第二镜像缓存代理的第一缓存地址时,进一步通过第二镜像缓存代理的第一缓存地址从第二镜像缓存代理的第二本地存储中查找第一镜像,得到第二镜像查找结果;进一步的,第一镜像缓存代理可以接收第一边缘计算节点返回的第二镜像查找结果。
应当理解,在本申请实施例中,第二镜像缓存代理通过第二代理服务组件(例如,上述图5所示的代理服务组件53b)与第一镜像缓存代理的第一代理服务组件(例如,上述图5所示的代理服务组件53a)之间建立长连接的具体实现方式可以描述为:第一镜像缓存代理可以调用第一镜像缓存代理中的第一代理服务组件,基于第二镜像缓存代理的代理地址,向第二镜像缓存代理发送连接建立请求,以使第二镜像缓存代理可以在调用第二代理服务组件对连接建立请求进行解析,得到第一镜像缓存代理的代理地址时,进一步根据第一镜像缓存代理的代理地址生成用于向第一镜像缓存代理发送的连接响应信息;进一步的,第一镜像缓存代理可以通过第一代理服务组件接收第二镜像缓存代理中的第二代理服务组件返回的连接响应信息,基于连接响应信息建立用于在第一代理服务组件与第二代理服务组件之间进行数据交互的长连接,进而可以将建立的长连接作为第一镜像缓存代理与第二镜像缓存代理之间的第二通信连接。
为便于理解,本申请实施例以上述图5所对应实施例中的架构,阐述在边缘地区进行镜像查找的具体过程。具体的,Docker 节点(例如,上述图5所示的竞争到全局锁的节点A1)在向第一镜像缓存代理(例如,上述镜像缓存代理A)请求第一镜像时,会通过第一代理服务组件(例如,上述代理服务组件,例如,registry代理层)优先在部署在边缘地区中的第一镜像缓存代理(例如,上述镜像缓存代理A)的第一本地存储(即上述本地存储52a)中查找是否存在该第一镜像。
如果存在,则第一镜像缓存代理就可以直接向请求该第一镜像的边缘计算节点(即Docker节点)返回该第一镜像,以快速是指Docker节点对该第一镜像的镜像下载。
反之,如果不存在,则该第一代理服务组件(例如,上述代理服务组件,例如,registry代理层)会进一步向镜像元数据中心(例如,上述镜像元数据中心5d)请求同区域有此第一镜像的其他镜像缓存代理的代理地址。此时,镜像元数据中心(例如,上述镜像元数据中心5d)就可以按网络延时排序,优先向第一镜像缓存代理的registry代理层,返回一个就近的有此第一镜像的边缘缓存代理的代理地址(即前述第二镜像缓存代理的代理地址),以使第一镜像缓存代理可以通过该第一代理服务组件(即第一镜像缓存代理的registry代理层)与第二镜像缓存代理建立上述第二通信连接,以基于上述第二通信连接获取到该第二镜像缓存代理的第二本地存储的地址(即前述第一缓存地址),从而可以通过该第一镜像缓存代理的该第一代理服务组件(即第一镜像缓存代理的registry代理层),通知上述第一边缘计算节点去该第一缓存地址所映射的第二本地存储中获取该第一镜像。这样,第一边缘计算节点可以在从第二本地存储中获取到该第一镜像的情况下,将获取到的该第一镜像添加至该第一边缘计算节点(例如,前述竞争到全局锁的节点A1)的第一本地存储(例如,上述图5所示的本地存储52a),以供该第一子区域中的其他边缘计算节点(例如,上述第二边缘计算节点)可以从该存储有第一镜像的第一本地存储中快速下载到该第一镜像。
可选地,在本申请实施例中,该第一镜像缓存代理还可以在通过该第一代理服务组件(即第一镜像缓存代理的registry代理层)与第二镜像缓存代理建立上述第二通信连接时,直接根据该第一镜像缓存代理的registry代理层所获取到的第一缓存地址,与上述处于同一P2P网络中的第二镜像缓存代理进行数据交互,以通过该第一代理服务组件(即第一镜像缓存代理的registry代理层)直接去该第一缓存地址所映射的第二本地存储中获取该第一镜像。这样,第一边缘计算节点和第一镜像缓存代理均可以同步从第二本地存储中获取到该第一镜像,此时,第一镜像缓存代理可以直接将自己所获取到的该第一镜像添加至第一本地存储(例如,上述图5所示的本地存储52a),以供该第一子区域中的其他边缘计算节点(例如,上述第二边缘计算节点)快速从该存储有第一镜像的第一本地存储中快速下载到该第一镜像。
应当理解,在本申请实施例中,第一镜像缓存代理可以在第一本地存储中更新有该第一镜像的情况下,进一步向镜像元数据中心注册该第一镜像的镜像信息。即第一镜像缓存代理可以将由该第一镜像的第一本地存储的地址注册到该镜像元数据中心(即上述图5所示的镜像元数据中心5d)。这样,在上述第二镜像存储代理(例如,上述图5所示的镜像缓存代理B)因为节点存储容量有限,而去除掉存储在第二本地存储中的第一镜像的情况(注意,此时,镜像元数据中心也会一并更新存储有该第一镜像的多个镜像缓存代理的代理地址)下,对于部署在该第二子区域中的边缘计算节点而言(例如,上述图5所对应实施例中的节点B1、节点B2、节点B3),也可以允许一个竞争到全局锁的节点(例如,节点B1)通过该最新更新的镜像元数据中心5d穿透到该第一子区域的第一本地存储中查找该第一镜像。
应当理解,如果上述第一边缘计算节点在第二本地存储中未查找到该第一镜像,则上述第一镜像缓存代理可以接收到该第一边缘计算节点针对前述第二子区域返回的区域镜像查找失败结果,并可以将该区域镜像查找失败结果作为上述第二镜像查找结果。此时,该第一镜像缓存代理可以在确定该目标区域(即上述区域2a)内的各镜像缓存代理的本地存储中没有此第一镜像的情况下,进一步执行下述步骤S209,以允许前述第一边缘计算节点从该中心仓库拉取该第一镜像,进而可以在拉取完后,也将该第一镜像的镜像信息注册到镜像元数据中心。
步骤S209,若第二镜像查找结果指示在第二本地存储中未查找到第一镜像,则在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,基于第一通信连接获取中心仓库的存储地址,且通知第一边缘计算节点通过中心仓库的存储地址从中心仓库拉取第一镜像。
步骤S210,接收第一边缘计算节点上传的从中心仓库拉取到的第一镜像,将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
其中,步骤S209-步骤S210的具体实现方式,可以参见上述图3所对应实施例中对步骤S104-步骤S105的描述,这里将不再继续进行赘述。
应当理解,可选地,本申请实施例还可以在距离该第一镜像缓存代理最近的第二镜像缓存代理中未查找到第一镜像的情况下,进一步在距离该第二镜像缓存代理较近的其他镜像缓存代理中查找该第一镜像。比如,对于上述镜像元数据中心所存储的多个镜像缓存代理的代理地址中包含第二镜像缓存代理的同时,还包含一些其他的待进行遍历的其他镜像缓存代理的代理地址。
为便于理解,本申请实施例可以将该目标区域中除第一子区域之外所剩余的子区域统称为待处理子区域,即这里的待处理子区域中不仅可以包含第二子区域,还可以包含一些其他的子区域(例如,第三子区域、第四子区域……)。由于上述镜像元数据中心会按照网络延时策略相继将可能存在该第一镜像的镜像缓存代理的代理地址给到该第一镜像缓存代理。所以,当第一镜像缓存代理通过第二镜像查找结果确定未在第二本地存储中查找该第一镜像时,可以进一步在可能存储有第一镜像的其他子区域中进行镜像查找。为便于理解,本申请实施例还可以将前述待处理子区域中除第二子区域之外的其他子区域统称为待遍历子区域,并可以将该待遍历子区域对应的镜像缓存代理统称为待遍历镜像缓存代理。
基于此,该第一镜像缓存代理可以在第二本地存储中未查找到第一镜像时,进一步获取镜像元数据中心所存储的待遍历镜像缓存代理的代理地址。此时,在第一镜像缓存代理通过待遍历镜像缓存代理的代理地址与待遍历镜像缓存代理建立第三通信连接时,可以进一步基于第三通信连接获取待遍历镜像缓存代理的第二缓存地址,进一步的,第一镜像缓存代理可以通知第一边缘计算节点通过第二缓存地址在待遍历镜像缓存代理对应的第三本地存储中查找第一镜像,且接收第一边缘计算节点返回的第三镜像查找结果。
应当理解,该第一镜像缓存代理获取第二缓存地址的具体实现方式,可以参见上述获取第一缓存地址的具体过程的描述,另外,第一边缘计算节点在第三本地存储中查找第一镜像的具体实现方式,也可以参见上述该第一边缘计算节点在第二本地存储中查找第一镜像的具体过程的描述,这里将不再继续进行赘述。
这样,当第一镜像缓存代理通过前述第三镜像查找结果确定在第三本地存储(即目标区域中的其他子区域所对应的镜像缓存代理的本地存储)中均未查找到第一镜像时,可以进一步在确定部署在目标区域中的所有镜像缓存代理均不存在第一镜像时,进而可以跳转执行上述步骤S209中在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,基于第一通信连接获取中心仓库的存储地址,且通知第一边缘计算节点通过中心仓库的存储地址从中心仓库拉取第一镜像的步骤。
应当理解,本申请实施例可以在部署在同一目标区域内的各镜像缓存代理之间,通过构建的P2P网络实现多级镜像缓存代理之间的数据交互。同理,本申请实施例还可以在部署在同一子区域(例如,第一子区域)内的各边缘计算节点之间,通过构建的另一P2P网络,实现节点之间的镜像加速方案。
为便于理解,进一步的,请参见图8,图8是本申请实施例提供的一种在边缘计算节点集群中实现节点之间进行数据交互的场景示意图。如图8的节点A1、节点 A2以及节点A3可以为上述部署在同一子区域(即上述第一子区域)中的边缘计算节点。其中,如图8所示的镜像缓存代理A可以为上述第一镜像缓存代理,该第一镜像缓存代理具体可以包含图8所示的种子文件生成中心(例如,该种子文件生成中心是指可以用于负责种子文件生成的SeederSvr组件)和种子文件中心(例如,该种子文件中心是指可以用于负责记录并存储各节点所缓存的镜像的元数据信息的Tracker组件)。
可以理解的是,如图8所示的节点A1可以通过点对点代理(例如,一种用于在P2P网络中进行数据交互的P2P-agent组件,该P2P-agent组件可以用于为该P2P网络中的其他节点提供相应镜像的拉取接口)向该种子文件中心上报自己的本地存储中所存储的镜像的元数据信息,例如,该节点A1的本地存储中所存储的镜像的元数据信息可以为第一镜像的镜像元数据信息,该第一镜像的镜像元数据信息可以为图8所示的元数据信息A11。
可选地,应当理解,若第一边缘计算节点(例如,图8所示的节点A1)通过上述镜像主动拉取方案从邻近区域或者中心仓库拉取到第二云应用的第二镜像时,可以将该第二镜像的镜像元数据信息作为新的元数据信息上报给图8所示的种子文件中心。这样,当该第一镜像缓存代理(即图8所示的)的第一本地存储(即图8所示的边缘镜像仓库)中存储有与第一边缘计算节点(例如,图8所示的节点A1)相关联的第二云应用的第二镜像时,图8所示的种子文件中心可以用于同步存储由第一边缘计算节点(例如,图8所示的节点A1)通过第一点对点代理(即节点A1中的点对点代理)上报的第二镜像的镜像元数据信息;其中,可以理解的是,这里的镜像元数据信息具体可以包括存储有该第二镜像的第一边缘计算节点的节点地址,例如,前述节点A1的节点地址;
这样,第一镜像缓存代理(即图8所示的镜像缓存代理A)在通过图8所示的种子文件生成中心接收第二边缘计算节点(例如,图8所示的节点A2)通过第二点对点代理(即节点A2中的点对点代理)发送的针对前述第二镜像的第二镜像拉取请求时,可以直接基于该第二镜像拉取请求在图8所示的种子文件生成中心查找是否存在该第二镜像的种子文件。如果存在,则该第一镜像缓存代理(即图8所示的镜像缓存代理A)将该第二镜像的种子文件返回给第二边缘计算节点(例如,图8所示的节点A2),以使第二边缘计算节点(例如,图8所示的节点A2)可以通过该第二点对点代理对第二镜像的种子文件进行文件解析,且在解析得到图8所示的种子文件中心的中心地址时,可以进一步通过中心地址与种子文件中心建立第四通信连接;这样,第二边缘计算节点(例如,图8所示的节点A2)就可以通过该第四通信连接直接从种子文件中心获取前述存储有第二镜像的第一边缘计算节点的节点地址,从而可以基于获取到的该第一边缘计算节点的节点地址快速从该第一边缘计算节点上拉取第二镜像。由此可见,对于处于同一子区域中的P2P网络而言,可以在同一边缘计算节点集群中通过该P2P网络,充分利用节点的剩余带宽能力来提升镜像下载的效率。应当理解,由于第一边缘计算节点所剩余的带宽能力是在内网中,故而不需要额外的带宽计费成本,从而可以从根源上减少镜像拉取时的带宽成本。
其中,可以理解的是,第二边缘计算节点(例如,图8所示的节点A2)在通过上述中心地址与种子文件中心建立第四通信连接时,可以通过该第四通信连接向种子文件中心汇报自己本地所存储镜像的元数据信息(例如,第一镜像的镜像元数据信息),还可以通过该第四通信连接向该种子文件中心请求自己所需要下载的新的镜像(例如,前述第二镜像);这样,第二边缘计算节点(例如,图8所示的节点A2)就可以通过该第四通信连接直接从种子文件中心获取前述存储有第二镜像的第一边缘计算节点的节点地址,以通过该第一边缘计算节点的节点地址快速实现从第一边缘计算节点下载自己所需要的第二镜像。
可选地,本申请实施例还可以在图8所示的种子文件生成中心中,未查找第二镜像的种子文件时,进一步通过图8所示的种子文件生成中心在第一本地存储中查找第二镜像,从而可以在第一本地存储中查找到第二镜像时,通过图8所示的种子文件生成中心获取种子文件中心的中心地址 ,且可以基于种子文件中心的中心地址和第二镜像,在该种子文件生成中心快速生成前述第二镜像的种子文件,以将在该种子文件生成中心所生成的第二镜像的种子文件返回给第二边缘计算节点,以使第二边缘计算节点可以通过第二点对点代理对第二镜像的种子文件进行文件解析,且在解析得到种子文件中心的中心地址时,通过中心地址与种子文件中心建立第四通信连接;即这里的第四通信连接可以用于指示第二边缘计算节点中的第二点对点代理在从种子文件中心获取第一边缘计算节点的节点地址时,基于第一边缘计算节点的节点地址从第一边缘计算节点上拉取第二镜像。
所以,在图8所示的节点A2通过前述P2P网络,快速从第一边缘计算节点(即图8所示的节点A1)上拉取到第二镜像时,也可以通过点对点代理向该种子文件中心上报自己的本地存储中所存储的第二镜像的元数据信息,例如,该节点A2的本地存储中所存储的第二镜像的元数据信息(即第二镜像的镜像元数据信息)可以为图8所示的元数据信息A22。
以此类推,如图8所示的节点A3在通过P2P网络,从节点A2或者节点A1的拉取到第二镜像时,也可以通过点对点代理向该种子文件中心上报自己的本地存储中所存储的该第二镜像的元数据信息,例如,该节点A3的本地存储中所存储的第二镜像的元数据信息(即第二镜像的镜像元数据信息)可以为图8所示的元数据信息A33。
可以理解的是,本申请实施例提出可以针对大镜像提出镜像预热方案。比如,如果上述第一镜像缓存代理的本地存储(即前述第一本地存储)中没有前述第二镜像,需要重新从中心仓库拉取该第二镜像。如果该第二镜像的镜像大小比较大,则与该第一镜像缓存代理处于同一子区域中的所有节点就需要等待这个第二镜像按层维度下载完,才能下载(即需要等待各镜像缓存代理下载完,其他节点才能从该相应镜像缓存代理上进行下载)。基于此,本申请实施例为了减少这部分耗时,针对大镜像,提出了采取上述镜像自动预热的功能,也就是在将第二镜像发布到正式环境时,将该第二镜像推送到中心仓库中,进而可以在中心仓库中测试完成后,自动触发该镜像预热功能,以将该第二镜像快速下载到镜像缓存代理。
为便于理解,进一步的,请参见图9,图9是本申请实施例提供的一种进行镜像预热的场景示意图。如图9所示的镜像缓存代理A为上述第一镜像缓存代理,该第一镜像缓存代理中包含图9所示的独立于中心文件生成中心73a的镜像配置代理72a。
另外,如图9所示,与中心仓库相关的镜像预热系统具体可以包括图9所示的镜像制作设备、镜像通知服务器和镜像配置服务器;其中,镜像制作设备可以用于向中心仓库上传制作的前述第二云应用的第二镜像;这里的镜像通知服务器可以用于在探测到中心仓库上存在针对第二镜像的上传操作时,进一步向镜像配置服务器推送(也可以称之为通知)第二镜像。应当理解,在本申请实施例中,镜像制作设备在将第二镜像上传至中心仓库时,会一并将为该第二镜像制作的镜像配置信息一并上传到中心仓库。这样,后续在镜像通知服务器探测到针对中心仓库的上传操作时,可以一并将从中心仓库获取到的针对该第二镜像的镜像配置信息一并发送给镜像配置服务器,以使镜像配置服务器可以根据该镜像配置信息识别该第二镜像所对应的第二云应用的应用类型。如果该镜像配置服务器识别该第二云应用的应用类型属于目标应用类型,则可以确定该第二镜像属于需要进行镜像预热处理的大镜像(即这里的大镜像属于预热类型的镜像,例如,属于预热类型的游戏镜像),进而可以触发镜像预热功能,向各镜像缓存代理的镜像配置代理下发针对该第二镜像的预热镜像信息。
具体的,该第一镜像缓存代理可以通过图9所示的镜像配置代理72a接收镜像配置服务器发送的预热镜像信息;这里的预热镜像信息可以是镜像配置服务器在确定由镜像通知服务器所推送的第二镜像属于预热类型(例如,核心游戏类型)的游戏镜像时所生成的;进一步的,第一镜像缓存代理可以通过图9所示的镜像配置代理72a获取预热镜像信息中的第二镜像,进而可以在该镜像配置代理72a连接到边缘镜像仓库71a的缓存地址时,快速将第二镜像下载至该第一镜像缓存代理的第一本地存储(即图9所示的边缘镜像仓库71a)。此外,可以理解的是,该镜像配置代理72a在将第二镜像下载至第一本地存储(即图9所示的边缘镜像仓库71a)时,还可以一并通知图9所示的种子文件生成中心73a制作该第二镜像的种子文件。
同理,对于图9所示的镜像缓存代理B而言,在镜像通知服务器向镜像配置服务器推送(也可以称之为通知)第二镜像之后,该第二镜像缓存代理(即图9所示的镜像缓存代理B)也可以通过图9所示的镜像配置代理72b接收镜像配置服务器发送的同一预热镜像信息;即这里的预热镜像信息是镜像配置服务器在确定由镜像通知服务器所推送的第二镜像属于预热类型(例如,核心游戏类型)的游戏镜像时所生成的;进一步的,第二镜像缓存代理也可以通过图9所示的镜像配置代理72b获取预热镜像信息中的第二镜像,进而可以在该镜像配置代理72b连接到边缘镜像仓库71b的缓存地址时,快速将第二镜像下载至该第二镜像缓存代理的第二本地存储(即图9所示的边缘镜像仓库71b)。可以理解的是,该镜像配置代理72b在将第二镜像下载至第二本地存储(即图9所示的边缘镜像仓库71b)时,还可以一并通知图9所示的种子文件生成中心73b制作该第二镜像的种子文件。
由此可见,本申请实施例为了避免不同边缘计算节点集群中的这些边缘计算节点同时启动镜像下载,而导致节点间和相应镜像缓存代理之间的带宽在某一瞬间因为暴增而打满整个机器的现象,提出可以在通过上述镜像制作设备制作某个镜像(例如,前述第二镜像)时,一并制作针对该镜像的镜像配置信息。这样,后续部署在镜像加速系统中的镜像通知服务器可以在探测或者监测到针对中心仓库的上传操作时,可以将镜像配置信息快速通知给镜像配置服务器,以快速通过该镜像配置信息识别出该上传操作所对应的镜像(例如,前述第二镜像)是否需要预热,如果需要预热,则可以触发前述镜像预热功能,快速将该需要预热的镜像下载到各镜像缓存代理的边缘镜像仓库,以便于与各镜像缓存代理处于同一子区域的边缘计算节点可以快速实现镜像下载。
可选地,本申请实施例还可以按照不同边缘计算节点集群中的这些边缘计算节点的节点规模和承载的带宽,进行镜像的分批自动下载。比如,在将上述属于预热类型的镜像(例如,游戏镜像)下载到具有较大用户规模的镜像缓存代理A的情况下,还可以根据该镜像缓存代理A所在第一子区域内的各边缘计算节点的节点规模,实现分批自动下载,进而可以确保同一边缘计算节点集群中的这些边缘计算节点可以快速获取到该属于预热类型的镜像(例如,游戏镜像)。同理,本申请实施例也可以在将属于预热类型的镜像(例如,游戏镜像)分批下载到具有较小用户规模的镜像缓存代理B的情况下,根据与该镜像缓存代理B处于同一子区域(即前述第二子区域)的各边缘计算节点的节点规模,实现分批自动下载,进而可以确保同一边缘计算节点集群中的这些边缘计算节点可以快速获取到该属于预热类型的镜像(例如,游戏镜像)。
为便于理解,进一步的,请参见图10,图10是本申请实施例提供的一种镜像分批下载的场景示意图。其中,可以理解的是,图10所示的镜像配置服务器可以为上述图9所对应实施例中的镜像配置服务器,该镜像配置服务器可以用于根据镜像配置信息判断是否需要自动触发镜像预热功能。如果需要,则对于如图10所示的与镜像缓存代理A(即前述第一镜像缓存代理)而言,可以通过镜像配置服务器所自动触发的镜像预热功能,将最新上传至中心仓库的镜像(例如,前述第二镜像)预下载到图10所示的镜像缓存代理A。其中,可以理解的是,镜像缓存代理从中心仓库下载该第二镜像的具体实现方式,可以参见上述图9所对应实施例对下载第二镜像至镜像缓存代理A的边缘镜像仓库71a的描述,这里将不再继续进行赘述。
如图10所示,由于该镜像配置服务器在将前述预热镜像信息给到镜像缓存代理A,以使该镜像缓存代理A根据该预热镜像信息快速获取到第二镜像的情况下,与该镜像缓存代理A处于同一子区域(即前述第一子区域)的边缘计算节点集群中的这些边缘计算节点,也可以接收到该镜像配置服务器分批通知下发预热镜像信息时,所同步下发的镜像分批下载信息,这样,对于部署在第一子区域中的这些边缘计算节点(例如,图10所示的包含节点1-N的N个节点)而言,就可以自动根据获取到的镜像分批下载信息,自行分批从该镜像缓存代理A下载相应镜像(例如,前述第二镜像)。应当理解,由镜像配置服务器所分批通知下发的预热镜像信息是镜像配置服务器根据同一边缘计算节点集群中的这些边缘计算节点的节点规模和承载的带宽所动态下发的。
为便于理解,本申请实施例以图10所示N个节点中的节点1为例,该节点1在通过图10所示的镜像配置代理组件(即节点1中的Image-agent组件)接收到前述镜像配置服务器分批通知下发的镜像分批下载信息时,可以通过上述该节点1的点对点代理调用该节点1的Docker接口,根据该镜像分批下载信息中所携带的镜像缓存代理A的本地存储(例如,上述图9所示的边缘镜像仓库)的缓存地址,将镜像缓存代理A中所存储的镜像(例如,第二镜像)下载到在该节点1中部署的容器(即前述云容器),进而可以在该节点1中部署的容器(即前述云容器)中启动该镜像(例如,第二镜像),以通过在该容器(即前述云容器)中启动的该镜像(例如,第二镜像)来执行相应的业务。
以此类推,对于第一子区域中所部署的其他边缘计算节点(例如,节点2-N)而言,也可以相继根据自己所分批获取到的前述镜像分批下载信息,分批将镜像缓存代理A中所存储的镜像(例如,第二镜像)下载到在相应节点中部署的容器(即前述云容器)。
由此可见,对于部署在同一边缘计算节点集群中这些边缘计算节点而言,可以在这些节点之间,按照这些节点的节点规模,来实现镜像的分批自动下载。应当理解,对于各边缘计算节点中的镜像配置代理组件(即Image-agent组件)而言,还可以用于管理自己所处节点的镜像存储大小。比如,如果镜像配置代理组件(即Image-agent组件)所处的节点为节点1,且该节点1的节点存储总量超过节点存储阈值(例如,80%),就可以通过该镜像配置代理组件(即Image-agent组件)实现对该节点1的节点存储总量的清理逻辑,比如,可以优先清除该节点1的容器中所部署的一些历史镜像。又比如,本申请实施例还可以在节点1中,通过该镜像配置代理组件(即Image-agent组件)维护同一云应用的两个版本的镜像,以避免同一云应用的不同版本的镜像对该节点1的节点存储总量的过度消耗。
由此可见,本申请实施例所涉及的第一镜像缓存代理可以为某个子区域(例如,第一子区域,该第一子区域可以为地域A1)中的镜像缓存代理,这里的第一子区域可以为某个区域(例如,目标区域,该目标区域可以为区域A)的子区域。基于此,在该第一子区域中的第一镜像缓存代理,获取到并发请求同一云游戏(即第一云应用)的游戏镜像(即第一镜像)多个边缘计算节点发送的多个第一镜像拉取请求的时候,可以针对获取到的多个第一镜像拉取请求优先在该第一镜像缓存代理自己的本地(即第一本地存储)查找是否有该第一镜像,如果未查找到,则说明自己本地没有,此时,该第一镜像缓存代理就需要通过全局锁来限制该多个边缘计算节点的镜像拉取权限,比如,本申请实施例可以在多个边缘计算节点中,允许竞争到全局锁的那个边缘计算节点(即前述第一边缘计算节点)穿透到隶属于同一目标区域中的其他子区域进行镜像拉取,进而可以在其他子区域中均未拉取到前述第一镜像的情况下,允许竞争到全局锁的那个边缘计算节点(即前述第一边缘计算节点)继续穿透到中心仓库,优先拉取到第一镜像,这样,后续其他边缘计算节点(即第二边缘计算节点)就可以等穿透到中心仓库的那个边缘计算节点(即前述第一边缘计算节点)将该第一镜像拉取到该第一镜像缓存代理的第一本地存储时,直接从该第一本地存储中拉取到该第一镜像。这意味着对于和第一边缘计算节点同步发送第一镜像拉取请求的其他边缘计算节点(例如,前述第二边缘计算节点)而言,无需也不会直接与中心仓库进行数据交互,而是直接与部署在同一子区域(即第一子区域)的第一镜像缓存代理进行数据交互,从而可以在这些边缘计算节点进行镜像拉取的过程中,从根源上降低镜像拉取时的带宽成本。
为便于理解,进一步的,请参见图11,图11是本申请实施例提供的一种镜像数据处理方法的交互时序图,方法由第一子区域对应的第一镜像缓存代理和第一目标边缘计算节点交互执行,这里的第一子区域为目标区域中的子区域,该第一镜像缓存代理可以为上述图2所对应实施例中的边缘缓存代理A。这里的第一目标边缘计算节点为在第一子区域中所部署的多个边缘计算节点中的任意一个边缘计算节点,例如,这里的第一目标边缘计算节点可以为上述图2所对应实施例中的节点A1;多个边缘计算节点还可以包括第二目标边缘计算节点;这里的第二目标边缘计算节点可以为多个边缘计算节点中除第一目标边缘计算节点之外的边缘计算节点;此时,该镜像数据处理方法至少可以包括以下步骤S301至步骤S311:
步骤S301,第一目标边缘计算节点向第一子区域对应的第一镜像缓存代理发送针对第一云应用的第一镜像的第一目标镜像拉取请求;
步骤S302,第一镜像缓存代理在将接收到的由第一目标边缘计算节点发送的第一目标镜像拉取请求和第二目标边缘计算节点针对第一镜像并发发送的第二目标镜像拉取请求,作为并发获取到的多个第一镜像拉取请求时,根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;
其中,可以理解的是,第一镜像缓存代理所获取到的多个镜像拉取请求不仅会包含第一目标边缘计算节点发送的镜像拉取请求,还可以包含多个边缘计算节点中除第一目标边缘计算节点之外的其他边缘计算节点针对同一镜像(即第一镜像)所并发发送的镜像拉取请求,为便于进行区分,本申请实施例可以将由第一目标边缘计算节点所发送的镜像拉取请求称之为第一目标镜像拉取请求,并可以将由第二目标边缘计算节点所发送的镜像拉取请求称之为第二目标镜像拉取请求,这样,第一镜像缓存代理可以将获取到的这些镜像拉取请求(即第一目标镜像拉取请求和第二目标镜像拉取请求)作为上述多个第一镜像拉取请求,进而可以在该第一镜像缓存代理的本地存储中为并发请求该第一镜像的这边边缘计算节点进行镜像查找,若该第一镜像缓存代理的本地存储(即第一本地存储)中存在该第一镜像,则该第一镜像缓存代理可以跳转执行下述步骤S308,以将该第一本地存储中存储的第一镜像直接返回给部署在第一子区域中的这些边缘计算节点,反之,该第一镜像缓存代理可以跳转执行下述步骤S303。
步骤S303,若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则第一镜像缓存代理在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
步骤S304,在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,获取中心仓库的存储地址;
可以理解的是,第一镜像缓存代理在执行完步骤S304之后,可以将该中心仓库的存储地址通知下发给当前作为第一边缘计算节点(即上述竞争到全局锁的边缘计算节点)的第一目标边缘计算节点。即此时,对于第一目标边缘计算节点而言,等效于执行下述步骤S305。
步骤S305,在第一目标边缘计算节点为第一边缘计算节点时,第一目标边缘计算节点接收第一镜像缓存代理通知下发的与目标区域相关联的中心仓库的存储地址;
其中,可以理解的是,这里的中心仓库的存储地址是第一镜像缓存代理在与中心仓库建立第一通信连接时所获取到的;
步骤S306,第一目标边缘计算节点在通过中心仓库的存储地址从中心仓库拉取到第一镜像时,将第一镜像上传至第一镜像缓存代理;
步骤S307,第一镜像缓存代理将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
其中,步骤S303-步骤S307的具体实现方式,可以参见上述图3所对应实施例中对从中心仓库拉取第一镜像的具体过程的描述,这里将不再继续进行赘述。
可选地,步骤S308,若第一镜像查找结果指示在第一本地存储中查找到第一镜像,则针对第一本地存储中所存储的第一镜像向第一目标边缘计算节点返回请求响应信息;
应当理解,此时,第一目标边缘计算节点可以在第一本地存储中存在第一镜像时,通过第一网卡接收第一镜像缓存代理针对第一本地存储中所存储的第一镜像返回的请求响应信息;其中,可以理解的是,第一目标边缘计算节点可以在建立的云容器中采用双网卡策略,应当理解,在所述第一云应用为云游戏时,这里的双网卡策略具体可以包含虚拟出的用于指示所述第一目标边缘计算节点拉取所述云游戏的游戏镜像的第一网卡,和用于指示所述第一目标边缘计算节点执行所述云游戏的游戏业务的第二网卡;此时,云游戏的游戏镜像为上述第一镜像。
步骤S309,第一目标边缘计算节点基于请求响应信息获取到第一镜像,在启动第一云应用对应的云容器时,在启动的第一云应用对应的云容器中部署第一镜像;
步骤S310,第一目标边缘计算节点可以通过第二网卡接收第一镜像对应的游戏客户端针对第一云应用发送的云应用访问请求,从云应用访问请求中获取第一云应用的游戏标识,基于第一云应用的游戏标识控制部署有第一镜像的云容器与游戏客户端建立游戏业务对应的业务连接;
步骤S311,第一目标边缘计算节点可以通过第二网卡接收游戏客户端基于业务连接发送的针对第一云应用执行的触发事件流,获取触发事件流对应的音视频数据,将音视频数据对应的音视频码流作为第一云应用的业务数据流,通过第二网卡将业务数据流下发至运行游戏客户端的游戏终端,以使游戏终端通过游戏客户端输出与业务数据流相关联的音视频数据。
应当理解,本申请实施例所涉及的第一镜像缓存代理可以在第一本地存储中预下载上述第一镜像,这样,当部署在第一子区域中的多个边缘计算节点需要向该第一镜像缓存代理并发请求该第一镜像时,就可以直接将该第一本地存储中所预下载的第一镜像直接返回给这些边缘计算节点,以在这些边缘计算节点中所部署的云容器中快速启动该第一镜像,进而可以通过该快速启动的第一镜像,提升在云容器中执行与该第一镜像相关联的业务(比如,游戏业务)的执行效率。
进一步的,请参见图12,图12是本申请实施例提供的一种镜像数据处理装置的结构示意图。如图12所示,镜像数据处理装置1可以运行在第一子区域对应的第一镜像缓存代理(例如,上述图1所对应实施例中的边缘缓存代理设备1000a)上,这里的第一子区域为某个区域(即目标区域)中的子区域。其中,镜像数据处理装置1可以包含:镜像拉取请求获取模块11,第一镜像查找模块12,全局锁竞争模块13,通知拉取镜像模块14和镜像上传模块15;
镜像拉取请求获取模块11,用于获取第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求;一个第一镜像拉取请求是一个边缘计算节点在启动第一云应用对应的云容器之前所生成且发送的;
第一镜像查找模块12,用于根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;
全局锁竞争模块13,用于若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
通知拉取镜像模块14,用于在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,获取中心仓库的存储地址,通知第一边缘计算节点通过存储地址从中心仓库拉取第一镜像;
镜像上传模块15,用于接收第一边缘计算节点上传的从中心仓库拉取到的第一镜像,将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
其中,镜像拉取请求获取模块11,第一镜像查找模块12,全局锁竞争模块13,通知拉取镜像模块14和镜像上传模块15的具体实现方式,可以参见上述图3所对应实施例中对步骤S101-步骤S105的描述,这里将不再继续进行赘述。
其中,第一镜像缓存代理包含第一代理服务组件;多个边缘计算节点中的每个边缘计算节点均在建立的云容器中采用双网卡策略,双网卡策略包含虚拟出的用于进行镜像拉取的第一网卡;每个边缘计算节点与第一镜像缓存代理均处于第一子区域对应的局域网络中;
镜像拉取请求获取模块11,具体用于在第一子区域对应的局域网络中,当第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用第一代理服务组件,基于各局域连接分别接收对应边缘计算节点针对第一云应用的第一镜像所并发发送的第一镜像拉取请求;一个局域连接为一个边缘计算节点通过对应云容器中的第一网卡与第一镜像缓存代理所建立的网络连接关系。
其中,镜像拉取请求获取模块11的具体实现方式,可以参见上述图6所对应实施例中对双网卡策略的描述,这里将不再继续进行赘述。
可选的,其中,第一镜像缓存代理包含独立于第一代理服务组件的第一容器注册服务组件;
装置1还包括:节点注册请求接收模块16,注册响应信息生成模块17和注册响应信息返回模块18;
节点注册请求接收模块16,用于在第一子区域对应的局域网络中,当第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用第一容器注册服务组件基于各局域连接分别接收每个边缘计算节点通过第一网卡发送的节点注册请求;一个节点注册请求中携带一个边缘计算节点的节点注册信息;
注册响应信息生成模块17,用于通过第一容器注册服务组件从接收到的各节点注册请求中获取对应边缘计算节点的节点注册信息,在将获取到的各边缘计算节点的节点注册信息写入第一容器注册服务组件对应的容器注册表时,生成用于返回给各边缘计算节点的注册成功响应信息;各边缘计算节点的注册成功响应信息用于表征对应边缘计算节点具备在第一镜像缓存代理的第一本地存储中查找第一镜像的权限;
注册响应信息返回模块18,用于调用第一容器注册服务组件将各边缘计算节点的注册成功响应信息返回给对应边缘计算节点。
其中,节点注册请求接收模块16,注册响应信息生成模块17和注册响应信息返回模块18的具体实现方式,可以参见上述图3所对应实施例中对边缘计算节点进行节点注册的具体过程的描述,这里将不再继续进行赘述。
其中,第一镜像缓存代理包含第一代理服务组件和独立于第一代理服务组件的第一容器注册服务组件;第一容器注册服务组件所对应的容器注册表中记录有多个边缘计算节点中的每个边缘计算节点的节点注册信息;
第一镜像查找模块12包括:节点标识获取单元121,注册表查找单元122和查找结果接收单元123;
节点标识获取单元121,用于通过第一代理服务组件从多个第一镜像拉取请求中获取多个边缘计算节点的节点标识;
注册表查找单元122,用于在通过第一代理服务组件调用第一容器注册服务组件获取到容器注册表时,在容器注册表中查找与多个边缘计算节点的节点标识相匹配的节点注册信息,并在容器注册表中查找到与多个边缘计算节点的节点标识相匹配的节点注册信息时,将查找到的节点注册信息所对应的边缘计算节点,作为具备在第一镜像缓存代理的第一本地存储中查找第一镜像的权限的注册边缘计算节点;
查找结果接收单元123,用于接收注册边缘计算节点在第一本地存储中对第一镜像进行查找所生成的镜像查找结果,并将接收到的镜像查找结果作为第一镜像查找结果。
其中,节点标识获取单元121,注册表查找单元122和查找结果接收单元123的具体实现方式,可以参见上述图3所对应实施例中对在第一本地存储中查找第一镜像的具体过程的描述,这里将不再继续进行赘述。
可选地,其中,装置1还包括:本地镜像查找成功模块19;
本地镜像查找成功模块19,用于若第一镜像查找结果指示在第一本地存储中查找到第一镜像,则将在第一本地存储中查找到第一镜像时的本地镜像查找成功结果作为多个第一镜像拉取请求的请求响应信息,将请求响应信息分发给多个边缘计算节点中的每个边缘计算节点,以使每个边缘计算节点基于请求响应信息获取到第一镜像,且在启动第一云应用对应的云容器时,在启动的第一云应用对应的云容器中部署第一镜像。
其中,本地镜像查找成功模块19的具体实现方式,可以参见上述在第一本地存储中成功查找到第一镜像的描述,这里将不再继续进行赘述。
其中,第一镜像缓存代理包含第一代理服务组件;第一代理服务组件包含用于为部署在第一子区域中的多个边缘计算节点配置全局锁的全局锁服务进程;
全局锁竞争模块13包括:锁服务进程启动单元131,竞争请求发送单元132和计算节点确定单元133;
锁服务进程启动单元131,用于若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则将在第一本地存储中未查找到第一镜像时的镜像查找结果作为本地镜像查找失败结果,基于本地镜像查找失败结果启动第一代理服务组件中的全局锁服务进程;
竞争请求发送单元132,用于在通过全局锁服务进程为多个边缘计算节点中配置全局锁时,向多个边缘计算节点中的每个边缘计算节点发送针对全局锁的竞争请求,以使每个边缘计算节点基于竞争请求竞争全局锁;
计算节点确定单元133,用于接收每个边缘计算节点中竞争到全局锁的边缘计算节点返回的竞争成功响应信息,基于竞争成功响应消息,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点。
其中,锁服务进程启动单元131,竞争请求发送单元132和计算节点确定单元133的具体实现方式,可以参见上述图3所对应实施例中对全局锁的描述,这里将不再继续进行赘述。
可选地,其中,目标区域包含独立于第一子区域的多个待处理子区域;多个待处理子区域为目标区域中除第一子区域之外的子区域;一个待处理子区域对应一个镜像缓存代理,且多个待处理子区域对应的多个镜像缓存代理的代理地址均存储在与第一镜像缓存代理相关联的镜像元数据中心; 一个代理地址用于映射一个镜像缓存代理;
装置1还包括:代理地址请求模块20和第二镜像查找模块21;
代理地址请求模块20,用于在第一本地存储中未查找到第一镜像时,通过镜像元数据中心在多个镜像缓存代理的代理地址中请求第二镜像缓存代理的代理地址;第二镜像缓存代理的代理地址为镜像元数据中心基于网络延时策略所确定的;网络延时策略用于指示第二镜像缓存代理的代理地址为在多个镜像缓存代理的代理地址中,所查找到的处于目标区域中、且与第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址;
第二镜像查找模21,用于在第一镜像缓存代理通过第二镜像缓存代理的代理地址与第二镜像缓存代理建立第二通信连接时,基于第二通信连接获取第二镜像缓存代理的第一缓存地址,通知第一边缘计算节点通过第一缓存地址在第二镜像缓存代理对应的第二本地存储中查找第一镜像,且接收第一边缘计算节点返回的第二镜像查找结果。
其中,代理地址请求模块20和第二镜像查找模块21的具体实现方式,可以参见上述图6所对应实施例中对在第二本地存储中查找第二镜像的具体过程的描述,这里将不再继续进行赘述。
其中,第一镜像缓存代理包含第一代理服务组件和独立于第一代理服务组件的第一容器注册服务组件;第二镜像缓存代理包含第二容器注册服务组件;镜像元数据中心中存储的第二镜像缓存代理的代理地址是由第二镜像缓存代理中的第二容器注册服务组件所发送的;
代理地址请求模块20包括:地址获取请求发送单元201和代理地址接收单元202;
地址获取请求发送单元201,用于在第一本地存储中未查找到第一镜像时,调用第一代理服务组件向镜像元数据中心发送地址获取请求;地址获取请求用于指示镜像元数据中心基于网络延时策略,将在多个镜像缓存代理的代理地址中,查找到的处于目标区域中、且与第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址,作为第二镜像缓存代理的代理地址;
代理地址接收单元202,用于调用第一代理服务组件接收镜像元数据中心基于地址获取请求返回的第二镜像缓存代理的代理地址。
其中,地址获取请求发送单元201和代理地址接收单元202的具体实现方式,可以参见上述图6所对应实施例中对获取代理地址的具体过程的描述,这里将不再继续进行赘述。
可选地,其中,第二镜像缓存代理包含不同于第二容器注册服务组件的第二代理服务组件;
装置1还包括:连接请求发送模块22和连接响应接收模块23;
连接请求发送模块22,用于调用第一镜像缓存代理中的第一代理服务组件,基于第二镜像缓存代理的代理地址,向第二镜像缓存代理发送连接建立请求,以使第二镜像缓存代理在调用第二代理服务组件对连接建立请求进行解析,得到第一镜像缓存代理的代理地址时,根据第一镜像缓存代理的代理地址生成用于向第一镜像缓存代理发送的连接响应信息;
连接响应接收模块23,用于通过第一代理服务组件接收第二镜像缓存代理中的第二代理服务组件返回的连接响应信息,基于连接响应信息建立用于在第一代理服务组件与第二代理服务组件之间进行数据交互的长连接,将建立的长连接作为第一镜像缓存代理与第二镜像缓存代理之间的第二通信连接。
其中,连接请求发送模块22和连接响应接收模块23的具体实现方式,可以参见上述图6所对应实施例中对建立第二通信连接的具体过程的描述,这里将不再继续进行赘述。
其中,第二镜像查找模块21包括:缓存地址接收单元211,通知消息下发单元212和镜像结果接收单元213;
缓存地址接收单元211,用于调用第一代理服务组件通过第二通信连接,接收第二代理服务组件返回的第二镜像缓存代理的第一缓存地址;
通知消息下发单元212,用于调用第一代理服务组件将第二镜像缓存代理的第一缓存地址添加到第一缓存地址通知消息,将第一缓存地址通知消息下发给具备镜像拉取权限的第一边缘计算节点,以使第一边缘计算节点基于第一缓存地址通知消息解析到第二镜像缓存代理的第一缓存地址时,通过第二镜像缓存代理的第一缓存地址从第二镜像缓存代理的第二本地存储中查找第一镜像,得到第二镜像查找结果;
镜像结果接收单元213,用于接收第一边缘计算节点返回的第二镜像查找结果。
其中,缓存地址接收单元211,通知消息下发单元212和镜像结果接收单元213的具体实现方式,可以参见上述图6所对应实施例中对在第二本地存储中查找第一镜像的具体过程的描述,这里将不再继续进行赘述。
可选地,其中,装置1还包括:第二本地查找失败模块24;
第二本地查找失败模块24,用于若第二镜像查找结果指示在第二本地存储中未查找到第一镜像,则通知通知拉取镜像模块14执行在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,基于第一通信连接获取中心仓库的存储地址,且通知第一边缘计算节点通过中心仓库的存储地址从中心仓库拉取第一镜像的步骤。
其中,第二本地查找失败模块24的具体实现方式,可以参见上述图6所对应实施例中对第二本地存储查找失败的具体过程的描述,这里将不再继续进行赘述。
可选地,其中,多个镜像缓存代理的代理地址中包含第二镜像缓存代理的代理地址和待遍历镜像缓存代理的代理地址;待遍历镜像缓存代理为在多个待处理子区域对应的多个镜像缓存代理中所确定的除第二镜像缓存代理之外的镜像缓存代理;
装置1还包括:遍历地址获取模块25,缓存地址获取模块26和通知遍历查找模块27;
遍历地址获取模25,用于若第二镜像查找结果指示在第二本地存储中未查找到第一镜像,则获取镜像元数据中心所存储的待遍历镜像缓存代理的代理地址,
缓存地址获取模块26,用于在第一镜像缓存代理通过待遍历镜像缓存代理的代理地址与待遍历镜像缓存代理建立第三通信连接时,基于第三通信连接获取待遍历镜像缓存代理的第二缓存地址;
通知遍历查找模块27,用于通知第一边缘计算节点通过第二缓存地址在待遍历镜像缓存代理对应的第三本地存储中查找第一镜像,且接收第一边缘计算节点返回的第三镜像查找结果。
其中,遍历地址获取模块25,缓存地址获取模块26和通知遍历查找模块27的具体实现方式,可以参见上述图6所对应实施例中对在目标区域中遍历查找第一镜像的具体过程的描述,这里将不再继续进行赘述。
其中,装置1还包括:区域镜像查找失败模块28;
区域镜像查找失败模块28,用于若第三镜像查找结果指示在第三本地存储中均未查找到第一镜像,则在确定部署在目标区域中的所有镜像缓存代理均不存在第一镜像时,通知通知拉取镜像模块14执行在第一镜像缓存代理与目标区域相关联的中心仓库建立第一通信连接时,基于第一通信连接获取中心仓库的存储地址,且通知第一边缘计算节点通过中心仓库的存储地址从中心仓库拉取第一镜像的步骤。
其中,区域镜像查找失败模块28的具体实现方式,可以参见上述图6所对应实施例中对遍历查找失败的具体过程的描述,这里将不再继续进行赘述。
可选地,其中,第一镜像缓存代理包含种子文件生成中心和种子文件中心;在第一镜像缓存代理的第一本地存储中存储有与第一边缘计算节点相关联的第二云应用的第二镜像时,种子文件中心用于存储由第一边缘计算节点通过第一点对点代理上报的第二镜像的镜像元数据信息;镜像元数据信息包括存储有第二镜像的第一边缘计算节点的节点地址;
装置1还包括:种子文件查找模块29,文件查找失败模块30,中心地址获取模块31和种子文件返回模块32;
种子文件查找模29,用于通过种子文件生成中心接收第二边缘计算节点通过第二点对点代理发送的针对第二镜像的第二镜像拉取请求,基于第二镜像拉取请求在种子文件生成中心查找第二镜像的种子文件;
文件查找失败模块30,用于若在种子文件生成中心未查找第二镜像的种子文件,则通过种子文件生成中心在第一本地存储中查找第二镜像;
中心地址获取模块31,用于当在第一本地存储中查找到第二镜像时,通过种子文件生成中心获取种子文件中心的中心地址 ,且基于种子文件中心的中心地址和第二镜像生成第二镜像的种子文件;
种子文件返回模块32,用于将第二镜像的种子文件返回给第二边缘计算节点,以使第二边缘计算节点通过第二点对点代理对第二镜像的种子文件进行文件解析,且在解析得到种子文件中心的中心地址时,通过中心地址与种子文件中心建立第四通信连接;第四通信连接用于指示第二边缘计算节点中的第二点对点代理在从种子文件中心获取第一边缘计算节点的节点地址时,基于第一边缘计算节点的节点地址从第一边缘计算节点上拉取第二镜像。
其中,种子文件查找模块29,文件查找失败模块30,中心地址获取模块31和种子文件返回模块32的具体实现方式,可以参见上述图6所对应实施例中对查找种子文件的具体过程的描述,这里将不再进行赘述。
可选地,其中,第一镜像缓存代理包含独立于中心文件生成中心的镜像配置代理;与中心仓库相关的镜像预热系统包括镜像制作设备、镜像通知服务器、镜像配置服务器;镜像制作设备用于向中心仓库上传制作的第二云应用的第二镜像;镜像通知服务器用于在探测到中心仓库上存在针对第二镜像的上传操作时,向镜像配置服务器推送第二镜像;
装置1还包括:预热镜像信息接收模块33和预热下载至本地模块34;
预热镜像信息接收模块33,用于通过镜像配置代理接收镜像配置服务器发送的预热镜像信息;预热镜像信息是镜像配置服务器在确定由镜像通知服务器所推送的第二镜像属于预热类型的镜像时所生成的;
预热下载至本地模块34,用于通过镜像配置代理获取预热镜像信息中的第二镜像,将第二镜像下载至第一本地存储。
其中,预热镜像信息接收模块33和预热下载至本地模块34的具体实现方式,可以参见上述图6所对应实施例中对镜像预热和镜像下载的具体过程的描述,这里将不再继续进行赘述。另外,对采用相同方法所得到的有益效果的描述,也不再继续进行赘述。
进一步的,请参见图13,图13是本申请实施例提供的另一种镜像数据处理装置的结构示意图。如图13所示,镜像数据处理装置2可以运行在第一目标边缘计算节点(例如,上述图1所对应实施例中的边缘计算节点11a)中。其中,第一目标边缘计算节点为在第一子区域中所部署的多个边缘计算节点中的任意一个边缘计算节点;多个边缘计算节点包括第二目标边缘计算节点;第二目标边缘计算节点为多个边缘计算节点中除第一目标边缘计算节点之外的边缘计算节点;第一子区域为目标区域中的子区域;应当理解,如图13所示,镜像数据处理装置2可以包含:镜像拉取请求发送模块100,存储地址接收模块200和镜像上传模块300;
镜像拉取请求发送模块100,用于向第一子区域对应的第一镜像缓存代理发送针对第一云应用的第一镜像的第一目标镜像拉取请求,以使第一镜像缓存代理在将接收到的由第一目标边缘计算节点发送的第一目标镜像拉取请求和第二目标边缘计算节点针对第一镜像并发发送的第二目标镜像拉取请求,作为并发获取到的多个第一镜像拉取请求时,根据多个第一镜像拉取请求,在第一镜像缓存代理的第一本地存储中对第一镜像进行查找,得到第一镜像查找结果;若第一镜像查找结果指示在第一本地存储中未查找到第一镜像,则在多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将多个边缘计算节点中除第一边缘计算节点之外的边缘计算节点作为锁定镜像拉取权限的第二边缘计算节点;
存储地址接收模块200,用于在第一目标边缘计算节点为第一边缘计算节点时,接收第一镜像缓存代理通知下发的与目标区域相关联的中心仓库的存储地址;中心仓库的存储地址是第一镜像缓存代理在与中心仓库建立第一通信连接时所获取到的;
镜像上传模块300,用于在通过中心仓库的存储地址从中心仓库拉取到第一镜像时,将第一镜像上传至第一镜像缓存代理,以使第一镜像缓存代理将第一镜像存储至第一本地存储,且允许第二边缘计算节点从存储有第一镜像的第一本地存储拉取第一镜像。
其中,镜像拉取请求发送模块100,存储地址接收模块200和镜像上传模块300的具体实现方式,可以参见上述图6或者图11所对应实施例中对第一目标边缘计算节点的描述,这里将不再继续进行赘述。
其中,第一目标边缘计算节点在建立的云容器中采用双网卡策略,在第一云应用为云游戏时,双网卡策略包含虚拟出的用于指示第一目标边缘计算节点拉取云游戏的游戏镜像的第一网卡,和用于指示第一目标边缘计算节点执行云游戏的游戏业务的第二网卡;云游戏的游戏镜像为第一镜像;
装置2还包括:请求响应返回模块400,云容器启动模块500,访问请求接收模块600和触发事件接收模块700;
请求响应返回模块400,用于在第一本地存储中存在第一镜像时,通过第一网卡接收第一镜像缓存代理针对第一本地存储中所存储的第一镜像返回的请求响应信息;
云容器启动模块500,用于基于请求响应信息获取到第一镜像,在启动第一云应用对应的云容器时,在启动的第一云应用对应的云容器中部署第一镜像;
访问请求接收模块600,用于通过第二网卡接收第一镜像对应的游戏客户端针对第一云应用发送的云应用访问请求,从云应用访问请求中获取第一云应用的游戏标识,基于第一云应用的游戏标识控制部署有第一镜像的云容器与游戏客户端建立游戏业务对应的业务连接;
触发事件接收模块700,用于通过第二网卡接收游戏客户端基于业务连接发送的针对第一云应用执行的触发事件流,获取触发事件流对应的音视频数据,将音视频数据对应的音视频码流作为第一云应用的业务数据流,通过第二网卡将业务数据流下发至运行游戏客户端的游戏终端,以使游戏终端通过游戏客户端输出与业务数据流相关联的音视频数据。
其中,请求响应返回模块400,云容器启动模块500,访问请求接收模块600和触发事件接收模块700的具体实现方式,可以参见上述图6或者图11所对应实施例中对双网卡策略的描述,这里将不再继续进行赘述。另外,对采用相同方法所得到的有益效果的描述,也不再进行赘述。
进一步地,请参见图14,图14是本申请实施例提供的一种计算机设备的结构示意图。如图14所示,该计算机设备1000可以为服务器,例如,上述图1所对应实施例中的边缘缓存代理设备1000a。该计算机设备1000可以包括:处理器1001,网络接口1004和存储器1005,此外,该计算机设备1000还可以包括:用户接口1003,和至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003还可以包括标准的有线接口、无线接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选的还可以是至少一个位于远离前述处理器1001的存储装置。如图14所示,作为一种计算机可读存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
其中,该计算机设备1000中的网络接口1004还可以提供网络通讯功能,且可选用户接口1003还可以包括显示屏(Display)、键盘(Keyboard)。在图14所示的计算机设备1000中,网络接口1004可提供网络通讯功能;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现前文图3、图6或者图11所对应实施例中对镜像数据处理方法的描述,也可执行前文图12所对应实施例中对镜像数据处理装置1的描述,或者执行前文图13所对应实施例中对镜像数据处理装置2的描述在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有前文提及的镜像数据处理装置1或者镜像数据处理装置2所执行的计算机程序,且计算机程序包括计算机指令,当处理器执行计算机指令时,能够执行前文图3、图6或者图11所对应实施例中对镜像数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机指令可被部署在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
此外,需要说明的是:本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或者计算机程序可以包括计算机指令,该计算机指令可以存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器可以执行该计算机指令,使得该计算机设备执行前文图3、图6或者图11所对应实施例中对镜像数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机程序产品或者计算机程序实施例中未披露的技术细节,请参照本申请方法实施例的描述。
进一步的,请参见图15,图15是本申请实施例提供的一种镜像数据处理系统的示意图。该镜像数据处理系统3可以包含镜像缓存代理3a、边缘计算节点3b;其中,镜像缓存代理3a可以为上述图3所对应实施例所描述的第一镜像缓存代理,该第一镜像缓存代理可以为上述图2所对应实施例中的镜像缓存代理A,这里将不再继续进行赘述。其中,边缘计算节点3b可以为上述图11所对应实施例所描述的处于第一子区域中的第一目标边缘计算节点,该第一目标边缘计算节点可以为上述图2所对应实施例中的部署在子区域21a中的任意一个区块链节点,这里将不再继续进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,存储介质可为磁碟、光盘、只读存储器(Read-Only Memory,ROM)或随机存储器(Random Access Memory,RAM)等。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (19)
1.一种镜像数据处理方法,其特征在于,所述方法由第一子区域对应的第一镜像缓存代理执行,所述第一镜像缓存代理包含第一代理服务组件;所述第一子区域为目标区域中的子区域,所述方法包括:
通过所述第一代理服务组件获取所述第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求;一个第一镜像拉取请求是一个边缘计算节点在启动所述第一云应用对应的云容器之前所生成且通过双网卡策略中的第一网卡发送的;在一个边缘计算节点中的第一网卡所对应的数据传输通道用于拉取所述第一镜像,且所述双网卡策略中的第二网卡所对应的数据传输通道用于在云容器中部署所述第一镜像后,向用户所对应的终端设备下发所述第一云应用的业务数据流;所述多个边缘计算节点中的每个边缘计算节点与所述第一镜像缓存代理均处于所述第一子区域对应的局域网络中;
根据所述多个第一镜像拉取请求,在所述第一镜像缓存代理的第一本地存储中对所述第一镜像进行查找,得到第一镜像查找结果;
若所述第一镜像查找结果指示在所述第一本地存储中未查找到所述第一镜像,则在所述多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将所述多个边缘计算节点中除所述第一边缘计算节点之外的边缘计算节点作为锁定所述镜像拉取权限的第二边缘计算节点;所述全局锁是由所述第一代理服务组件通过全局锁服务进程为所述第一子区域中的所述多个边缘计算节点所配置的;所述全局锁服务进程用于限定位于同一镜像层中的所述多个边缘计算节点中有且仅有一个边缘计算节点竞争到所述全局锁;所述第一边缘计算节点的数量为一个;
在所述第一镜像缓存代理与所述目标区域相关联的中心仓库建立第一通信连接时,获取所述中心仓库的存储地址,通知所述第一边缘计算节点通过所述存储地址从所述中心仓库拉取所述第一镜像;
接收所述第一边缘计算节点上传的从所述中心仓库拉取到的所述第一镜像,将所述第一镜像存储至所述第一本地存储,且允许所述第二边缘计算节点通过所述局域网络从存储有所述第一镜像的第一本地存储拉取所述第一镜像。
2.根据权利要求1所述的方法,其特征在于,所述多个边缘计算节点中的每个边缘计算节点均在建立的云容器中采用双网卡策略,所述双网卡策略包含虚拟出的用于进行镜像拉取的第一网卡;
所述通过所述第一代理服务组件获取所述第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求,包括:
在所述第一子区域对应的局域网络中,当所述第一镜像缓存代理分别与每个边缘计算节点建立局域连接时,调用所述第一代理服务组件,基于各局域连接分别接收对应边缘计算节点针对第一云应用的第一镜像所并发发送的第一镜像拉取请求;一个局域连接为一个边缘计算节点通过对应云容器中的第一网卡与所述第一镜像缓存代理所建立的网络连接关系。
3.根据权利要求2所述的方法,其特征在于,所述第一镜像缓存代理包含独立于所述第一代理服务组件的第一容器注册服务组件;
所述方法还包括:
在所述第一子区域对应的局域网络中,当所述第一镜像缓存代理分别与所述每个边缘计算节点建立局域连接时,调用所述第一容器注册服务组件,基于各局域连接分别接收所述每个边缘计算节点通过所述第一网卡发送的节点注册请求;一个节点注册请求中携带一个边缘计算节点的节点注册信息;
通过所述第一容器注册服务组件从接收到的各节点注册请求中获取对应边缘计算节点的节点注册信息,在将获取到的各边缘计算节点的节点注册信息写入所述第一容器注册服务组件对应的容器注册表时,生成用于返回给所述各边缘计算节点的注册成功响应信息;所述各边缘计算节点的注册成功响应信息用于表征对应边缘计算节点具备在所述第一镜像缓存代理的第一本地存储中查找所述第一镜像的权限;
调用所述第一容器注册服务组件,将所述各边缘计算节点的注册成功响应信息返回给对应边缘计算节点。
4.根据权利要求1所述的方法,其特征在于,所述第一镜像缓存代理包含独立于所述第一代理服务组件的第一容器注册服务组件;所述第一容器注册服务组件所对应的容器注册表中记录有所述多个边缘计算节点中的每个边缘计算节点的节点注册信息;
所述根据所述多个第一镜像拉取请求,在所述第一镜像缓存代理的第一本地存储中对所述第一镜像进行查找,得到第一镜像查找结果,包括:
通过所述第一代理服务组件从所述多个第一镜像拉取请求中获取所述多个边缘计算节点的节点标识;
在通过所述第一代理服务组件调用所述第一容器注册服务组件获取到所述容器注册表时,在所述容器注册表中查找与所述多个边缘计算节点的节点标识相匹配的节点注册信息,并在所述容器注册表中查找到与所述多个边缘计算节点的节点标识相匹配的节点注册信息时,将查找到的节点注册信息所对应的边缘计算节点,作为具备在所述第一镜像缓存代理的第一本地存储中查找所述第一镜像的权限的注册边缘计算节点;
接收所述注册边缘计算节点在所述第一本地存储中对所述第一镜像进行查找所生成的镜像查找结果,并将接收到的镜像查找结果作为所述第一镜像查找结果。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述第一镜像查找结果指示在所述第一本地存储中查找到所述第一镜像,则将在所述第一本地存储中查找到所述第一镜像时的本地镜像查找成功结果作为所述多个第一镜像拉取请求的请求响应信息,将所述请求响应信息分发给所述多个边缘计算节点中的每个边缘计算节点,以使所述每个边缘计算节点基于所述请求响应信息获取到所述第一镜像,且在启动所述第一云应用对应的云容器时,在启动的所述第一云应用对应的云容器中部署所述第一镜像。
6.根据权利要求1所述的方法,其特征在于,所述第一代理服务组件包含用于为部署在所述第一子区域中的所述多个边缘计算节点配置全局锁的全局锁服务进程;
所述若所述第一镜像查找结果指示在所述第一本地存储中未查找到所述第一镜像,则在所述多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将所述多个边缘计算节点中除所述第一边缘计算节点之外的边缘计算节点作为锁定所述镜像拉取权限的第二边缘计算节点,包括:
若所述第一镜像查找结果指示在所述第一本地存储中未查找到所述第一镜像,则将在所述第一本地存储中未查找到所述第一镜像时的镜像查找结果作为本地镜像查找失败结果,基于所述本地镜像查找失败结果启动所述第一代理服务组件中的所述全局锁服务进程;
在通过所述全局锁服务进程为所述多个边缘计算节点中配置所述全局锁时,向所述多个边缘计算节点中的每个边缘计算节点发送针对所述全局锁的竞争请求,以使所述每个边缘计算节点基于所述竞争请求竞争所述全局锁;
接收所述每个边缘计算节点中竞争到所述全局锁的边缘计算节点返回的竞争成功响应信息,基于所述竞争成功响应消息,将竞争到所述全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将所述多个边缘计算节点中除所述第一边缘计算节点之外的边缘计算节点作为锁定所述镜像拉取权限的第二边缘计算节点。
7.根据权利要求1所述的方法,其特征在于,所述目标区域包含独立于所述第一子区域的多个待处理子区域;所述多个待处理子区域为所述目标区域中除所述第一子区域之外的子区域;一个待处理子区域对应一个镜像缓存代理,且所述多个待处理子区域对应的多个镜像缓存代理的代理地址,均存储在与所述第一镜像缓存代理相关联的镜像元数据中心;一个代理地址用于映射一个镜像缓存代理;
所述方法还包括:
在所述第一本地存储中未查找到所述第一镜像时,通过所述镜像元数据中心在所述多个镜像缓存代理的代理地址中请求第二镜像缓存代理的代理地址;所述第二镜像缓存代理的代理地址为所述镜像元数据中心基于网络延时策略所确定的;所述网络延时策略用于指示所述第二镜像缓存代理的代理地址为在所述多个镜像缓存代理的代理地址中,所查找到的处于所述目标区域中、且与所述第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址;
在所述第一镜像缓存代理通过所述第二镜像缓存代理的代理地址与所述第二镜像缓存代理建立第二通信连接时,基于所述第二通信连接获取所述第二镜像缓存代理的第一缓存地址,通知所述第一边缘计算节点通过所述第一缓存地址在所述第二镜像缓存代理对应的第二本地存储中查找所述第一镜像,且接收所述第一边缘计算节点返回的第二镜像查找结果。
8.根据权利要求7所述的方法,其特征在于,所述第一镜像缓存代理包含第一代理服务组件和独立于所述第一代理服务组件的第一容器注册服务组件;所述第二镜像缓存代理包含第二容器注册服务组件;所述镜像元数据中心中存储的所述第二镜像缓存代理的代理地址是由所述第二镜像缓存代理中的所述第二容器注册服务组件所发送的;
所述在所述第一本地存储中未查找到所述第一镜像时,通过所述镜像元数据中心在所述多个镜像缓存代理的代理地址中请求第二镜像缓存代理的代理地址,包括:
在所述第一本地存储中未查找到所述第一镜像时,调用所述第一代理服务组件向所述镜像元数据中心发送地址获取请求;所述地址获取请求用于指示所述镜像元数据中心基于所述网络延时策略,将在所述多个镜像缓存代理的代理地址中,查找到的处于所述目标区域中、且与所述第一镜像缓存代理具有最小距离的镜像缓存代理的代理地址,作为第二镜像缓存代理的代理地址;
调用所述第一代理服务组件接收所述镜像元数据中心基于所述地址获取请求返回的所述第二镜像缓存代理的代理地址。
9.根据权利要求8所述的方法,其特征在于,所述第二镜像缓存代理包含不同于所述第二容器注册服务组件的第二代理服务组件;
所述方法还包括:
调用所述第一镜像缓存代理中的所述第一代理服务组件,基于所述第二镜像缓存代理的代理地址,向所述第二镜像缓存代理发送连接建立请求,以使所述第二镜像缓存代理在调用所述第二代理服务组件对所述连接建立请求进行解析,得到所述第一镜像缓存代理的代理地址时,根据所述第一镜像缓存代理的代理地址生成用于向所述第一镜像缓存代理发送的连接响应信息;
通过所述第一代理服务组件接收所述第二镜像缓存代理中的所述第二代理服务组件返回的所述连接响应信息,基于所述连接响应信息建立用于在所述第一代理服务组件与所述第二代理服务组件之间进行数据交互的长连接,将建立的长连接作为所述第一镜像缓存代理与所述第二镜像缓存代理之间的第二通信连接。
10.根据权利要求9所述的方法,其特征在于,所述基于所述第二通信连接获取所述第二镜像缓存代理的第一缓存地址,通知所述第一边缘计算节点通过所述第一缓存地址在所述第二镜像缓存代理对应的第二本地存储中查找所述第一镜像,且接收所述第一边缘计算节点返回的第二镜像查找结果,包括:
调用所述第一代理服务组件通过所述第二通信连接,接收所述第二代理服务组件返回的所述第二镜像缓存代理的第一缓存地址;
调用所述第一代理服务组件将所述第二镜像缓存代理的所述第一缓存地址添加到第一缓存地址通知消息,将所述第一缓存地址通知消息下发给具备所述镜像拉取权限的所述第一边缘计算节点,以使所述第一边缘计算节点基于第一缓存地址通知消息解析到所述第二镜像缓存代理的所述第一缓存地址时,通过所述第二镜像缓存代理的所述第一缓存地址从所述第二镜像缓存代理的第二本地存储中查找所述第一镜像,得到第二镜像查找结果;
接收所述第一边缘计算节点返回的所述第二镜像查找结果。
11.根据权利要求7所述的方法,其特征在于,所述多个镜像缓存代理的代理地址中包含所述第二镜像缓存代理的代理地址和待遍历镜像缓存代理的代理地址;所述待遍历镜像缓存代理为在所述多个待处理子区域对应的多个镜像缓存代理中所确定的除所述第二镜像缓存代理之外的镜像缓存代理;
所述方法还包括:
若所述第二镜像查找结果指示在所述第二本地存储中未查找到所述第一镜像,则获取所述镜像元数据中心所存储的所述待遍历镜像缓存代理的代理地址,
在所述第一镜像缓存代理通过所述待遍历镜像缓存代理的代理地址与所述待遍历镜像缓存代理建立第三通信连接时,基于所述第三通信连接获取所述待遍历镜像缓存代理的第二缓存地址;
通知所述第一边缘计算节点通过所述第二缓存地址在所述待遍历镜像缓存代理对应的第三本地存储中查找所述第一镜像,且接收所述第一边缘计算节点返回的第三镜像查找结果。
12.根据权利要求1所述的方法,其特征在于,所述第一镜像缓存代理包含种子文件生成中心和种子文件中心;在所述第一镜像缓存代理的第一本地存储中存储有与所述第一边缘计算节点相关联的第二云应用的第二镜像时,所述种子文件中心用于存储由所述第一边缘计算节点通过第一点对点代理上报的所述第二镜像的镜像元数据信息;所述镜像元数据信息包括存储有所述第二镜像的所述第一边缘计算节点的节点地址;
所述方法还包括:
通过所述种子文件生成中心接收所述第二边缘计算节点通过第二点对点代理发送的针对所述第二镜像的第二镜像拉取请求,基于所述第二镜像拉取请求在所述种子文件生成中心查找所述第二镜像的种子文件;
若在所述种子文件生成中心未查找所述第二镜像的种子文件,则通过所述种子文件生成中心在所述第一本地存储中查找所述第二镜像;
当在所述第一本地存储中查找到第二镜像时,通过所述种子文件生成中心获取所述种子文件中心的中心地址 ,且基于所述种子文件中心的中心地址和所述第二镜像生成所述第二镜像的种子文件;
将所述第二镜像的种子文件返回给所述第二边缘计算节点,以使所述第二边缘计算节点通过所述第二点对点代理对所述第二镜像的种子文件进行文件解析,且在解析得到所述种子文件中心的中心地址时,通过所述中心地址与所述种子文件中心建立第四通信连接;所述第四通信连接用于指示所述第二边缘计算节点中的所述第二点对点代理在从所述种子文件中心获取所述第一边缘计算节点的节点地址时,基于所述第一边缘计算节点的节点地址从所述第一边缘计算节点上拉取所述第二镜像。
13.根据权利要求12所述的方法,其特征在于,所述第一镜像缓存代理包含独立于所述中心文件生成中心的镜像配置代理;与所述中心仓库相关的镜像预热系统包括镜像制作设备、镜像通知服务器、镜像配置服务器;所述镜像制作设备用于向所述中心仓库上传制作的所述第二云应用的所述第二镜像;所述镜像通知服务器用于在探测到所述中心仓库上存在针对所述第二镜像的上传操作时,向所述镜像配置服务器推送所述第二镜像;
所述方法还包括:
通过所述镜像配置代理接收所述镜像配置服务器发送的预热镜像信息;所述预热镜像信息是所述镜像配置服务器在确定由所述镜像通知服务器所推送的所述第二镜像属于预热类型的镜像时所生成的;
通过所述镜像配置代理获取所述预热镜像信息中的所述第二镜像,将所述第二镜像下载至所述第一本地存储。
14.一种镜像数据处理方法,其特征在于,所述方法由第一目标边缘计算节点执行;所述第一目标边缘计算节点为在第一子区域中所部署的多个边缘计算节点中的任意一个边缘计算节点;所述多个边缘计算节点包括第二目标边缘计算节点;所述第二目标边缘计算节点为所述多个边缘计算节点中除所述第一目标边缘计算节点之外的边缘计算节点;所述第一子区域为目标区域中的子区域;
所述方法包括:
在所述第一目标边缘计算节点启动第一云应用对应的云容器之前,通过双网卡策略中的第一网卡向所述第一子区域对应的第一镜像缓存代理发送针对所述第一云应用的第一镜像的第一目标镜像拉取请求,以使所述第一镜像缓存代理在通过第一代理服务组件将接收到的由所述第一目标边缘计算节点发送的第一目标镜像拉取请求和所述第二目标边缘计算节点针对所述第一镜像并发发送的第二目标镜像拉取请求,作为并发获取到的多个第一镜像拉取请求时,根据所述多个第一镜像拉取请求,在所述第一镜像缓存代理的第一本地存储中对所述第一镜像进行查找,得到第一镜像查找结果;若所述第一镜像查找结果指示在所述第一本地存储中未查找到所述第一镜像,则在所述多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将所述多个边缘计算节点中除所述第一边缘计算节点之外的边缘计算节点作为锁定所述镜像拉取权限的第二边缘计算节点;在一个边缘计算节点中的第一网卡所对应的数据传输通道用于拉取所述第一镜像,且所述双网卡策略中的第二网卡所对应的数据传输通道用于在云容器中部署所述第一镜像后,向用户所对应的终端设备下发所述第一云应用的业务数据流;所述多个边缘计算节点中的每个边缘计算节点与所述第一镜像缓存代理均处于所述第一子区域对应的局域网络中;所述全局锁是由所述第一代理服务组件通过全局锁服务进程为所述第一子区域中的所述多个边缘计算节点所配置的;所述全局锁服务进程用于限定位于同一镜像层中的所述多个边缘计算节点中有且仅有一个边缘计算节点竞争到所述全局锁;所述第一边缘计算节点的数量为一个;
在所述第一目标边缘计算节点为所述第一边缘计算节点时,接收所述第一镜像缓存代理通知下发的与所述目标区域相关联的中心仓库的存储地址;所述中心仓库的存储地址是所述第一镜像缓存代理在与所述中心仓库建立第一通信连接时所获取到的;
在通过所述中心仓库的存储地址从所述中心仓库拉取到所述第一镜像时,将所述第一镜像上传至所述第一镜像缓存代理,以使所述第一镜像缓存代理将所述第一镜像存储至所述第一本地存储,且允许所述第二边缘计算节点通过所述局域网络从存储有所述第一镜像的第一本地存储拉取所述第一镜像。
15.根据权利要求14所述的方法,其特征在于,所述第一目标边缘计算节点在建立的云容器中采用双网卡策略,在所述第一云应用为云游戏时,所述双网卡策略包含虚拟出的用于指示所述第一目标边缘计算节点拉取所述云游戏的游戏镜像的第一网卡,和用于指示所述第一目标边缘计算节点执行所述云游戏的游戏业务的第二网卡;所述云游戏的游戏镜像为所述第一镜像;
所述方法还包括:
通过所述第一网卡接收所述第一镜像缓存代理针对所述第一本地存储中所存储的所述第一镜像返回的请求响应信息,
基于所述请求响应信息获取到所述第一镜像,在启动所述第一云应用对应的云容器时,在启动的所述第一云应用对应的云容器中部署所述第一镜像;
通过第二网卡接收所述第一镜像对应的游戏客户端针对所述第一云应用发送的云应用访问请求,从所述云应用访问请求中获取所述第一云应用的游戏标识,基于所述第一云应用的游戏标识控制部署有所述第一镜像的云容器与所述游戏客户端建立所述游戏业务对应的业务连接;
通过所述第二网卡接收所述游戏客户端基于所述业务连接发送的针对所述第一云应用执行的触发事件流,获取所述触发事件流对应的音视频数据,将所述音视频数据对应的音视频码流作为所述第一云应用的业务数据流,通过所述第二网卡将所述业务数据流下发至运行所述游戏客户端的游戏终端,以使所述游戏终端通过所述游戏客户端输出与所述业务数据流相关联的音视频数据。
16.一种镜像数据处理装置,其特征在于,所述装置运行在第一子区域对应的第一镜像缓存代理上,所述第一镜像缓存代理包含第一代理服务组件;所述第一子区域为目标区域中的子区域,所述装置包括:
镜像拉取请求获取模块,用于通过所述第一代理服务组件获取所述第一子区域中的多个边缘计算节点针对第一云应用的第一镜像并发发送的多个第一镜像拉取请求;一个第一镜像拉取请求是一个边缘计算节点在启动所述第一云应用对应的云容器之前所生成且通过双网卡策略中的第一网卡发送的;在一个边缘计算节点中的第一网卡所对应的数据传输通道用于拉取所述第一镜像,且所述双网卡策略中的第二网卡所对应的数据传输通道用于在云容器中部署所述第一镜像后,向用户所对应的终端设备下发所述第一云应用的业务数据流;所述多个边缘计算节点中的每个边缘计算节点与所述第一镜像缓存代理均处于所述第一子区域对应的局域网络中;
第一镜像查找模块,用于根据所述多个第一镜像拉取请求,在所述第一镜像缓存代理的第一本地存储中对所述第一镜像进行查找,得到第一镜像查找结果;
全局锁竞争模块,用于若所述第一镜像查找结果指示在所述第一本地存储中未查找到所述第一镜像,则在所述多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将所述多个边缘计算节点中除所述第一边缘计算节点之外的边缘计算节点作为锁定所述镜像拉取权限的第二边缘计算节点;所述全局锁是由所述第一代理服务组件通过全局锁服务进程为所述第一子区域中的所述多个边缘计算节点所配置的;所述全局锁服务进程用于限定位于同一镜像层中的所述多个边缘计算节点中有且仅有一个边缘计算节点竞争到所述全局锁;所述第一边缘计算节点的数量为一个;
通知拉取镜像模块,用于在所述第一镜像缓存代理与所述目标区域相关联的中心仓库建立第一通信连接时,获取所述中心仓库的存储地址,通知所述第一边缘计算节点通过所述存储地址从所述中心仓库拉取所述第一镜像;
镜像上传模块,用于接收所述第一边缘计算节点上传的从所述中心仓库拉取到的所述第一镜像,将所述第一镜像存储至所述第一本地存储,且允许所述第二边缘计算节点通过所述局域网络从存储有所述第一镜像的第一本地存储拉取所述第一镜像。
17.一种镜像数据处理装置,其特征在于,所述装置运行在第一目标边缘计算节点上;所述第一目标边缘计算节点为在第一子区域中所部署的多个边缘计算节点中的任意一个边缘计算节点;所述多个边缘计算节点包括第二目标边缘计算节点;所述第二目标边缘计算节点为所述多个边缘计算节点中除所述第一目标边缘计算节点之外的边缘计算节点;所述第一子区域为目标区域中的子区域;
所述装置包括:
镜像拉取请求发送模块,用于在所述第一目标边缘计算节点启动第一云应用对应的云容器之前,通过双网卡策略中的第一网卡向所述第一子区域对应的第一镜像缓存代理发送针对第一云应用的第一镜像的第一目标镜像拉取请求,以使所述第一镜像缓存代理在通过第一代理服务组件将接收到的由所述第一目标边缘计算节点发送的第一目标镜像拉取请求和所述第二目标边缘计算节点针对所述第一镜像并发发送的第二目标镜像拉取请求,作为并发获取到的多个第一镜像拉取请求时,根据所述多个第一镜像拉取请求,在所述第一镜像缓存代理的第一本地存储中对所述第一镜像进行查找,得到第一镜像查找结果;若所述第一镜像查找结果指示在所述第一本地存储中未查找到所述第一镜像,则在所述多个边缘计算节点中,将竞争到全局锁的边缘计算节点作为具备镜像拉取权限的第一边缘计算节点,并将所述多个边缘计算节点中除所述第一边缘计算节点之外的边缘计算节点作为锁定所述镜像拉取权限的第二边缘计算节点;在一个边缘计算节点中的第一网卡所对应的数据传输通道用于拉取所述第一镜像,且所述双网卡策略中的第二网卡所对应的数据传输通道用于在云容器中部署所述第一镜像后,向用户所对应的终端设备下发所述第一云应用的业务数据流;所述多个边缘计算节点中的每个边缘计算节点与所述第一镜像缓存代理均处于所述第一子区域对应的局域网络中;所述全局锁是由所述第一代理服务组件通过全局锁服务进程为所述第一子区域中的所述多个边缘计算节点所配置的;所述全局锁服务进程用于限定位于同一镜像层中的所述多个边缘计算节点中有且仅有一个边缘计算节点竞争到所述全局锁;所述第一边缘计算节点的数量为一个;
存储地址接收模块,用于在所述第一目标边缘计算节点为所述第一边缘计算节点时,接收所述第一镜像缓存代理通知下发的与所述目标区域相关联的中心仓库的存储地址;所述中心仓库的存储地址是所述第一镜像缓存代理在与所述中心仓库建立第一通信连接时所获取到的;
镜像上传模块,用于在通过所述中心仓库的存储地址从所述中心仓库拉取到所述第一镜像时,将所述第一镜像上传至所述第一镜像缓存代理,以使所述第一镜像缓存代理将所述第一镜像存储至所述第一本地存储,且允许所述第二边缘计算节点通过所述局域网络从存储有所述第一镜像的第一本地存储拉取所述第一镜像。
18.一种计算机设备,其特征在于,包括存储器和处理器;
所述存储器与所述处理器相连,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-15任一项所述的方法。
19.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-15任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310057881.XA CN115794139B (zh) | 2023-01-16 | 2023-01-16 | 镜像数据处理方法、装置、设备以及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310057881.XA CN115794139B (zh) | 2023-01-16 | 2023-01-16 | 镜像数据处理方法、装置、设备以及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115794139A CN115794139A (zh) | 2023-03-14 |
CN115794139B true CN115794139B (zh) | 2023-04-28 |
Family
ID=85429707
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310057881.XA Active CN115794139B (zh) | 2023-01-16 | 2023-01-16 | 镜像数据处理方法、装置、设备以及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115794139B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301950B (zh) * | 2023-05-15 | 2023-08-01 | 北京中诺链捷数字科技有限公司 | Docker镜像生成方法、装置、设备和存储介质 |
CN117061503B (zh) * | 2023-10-11 | 2024-01-26 | 腾讯科技(深圳)有限公司 | 镜像文件管理方法、装置、计算机可读介质及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114844879A (zh) * | 2022-03-25 | 2022-08-02 | 网宿科技股份有限公司 | 镜像管理方法、电子设备和存储介质 |
CN115499449A (zh) * | 2022-07-28 | 2022-12-20 | 阿里巴巴(中国)有限公司 | 镜像加速系统、方法及装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109391664B (zh) * | 2017-08-11 | 2021-04-20 | 中国电信股份有限公司 | 用于多集群容器部署的系统和方法 |
WO2021232289A1 (zh) * | 2020-05-20 | 2021-11-25 | 深圳市欢太科技有限公司 | 镜像拉取方法及相关产品 |
CN113746881A (zh) * | 2020-05-29 | 2021-12-03 | 电科云(北京)科技有限公司 | 容器镜像下载方法及系统 |
CN112433814A (zh) * | 2020-11-24 | 2021-03-02 | 中信银行股份有限公司 | 一种本地镜像仓库管理方法、装置和系统 |
CN113438696B (zh) * | 2021-06-22 | 2022-09-13 | 咪咕互动娱乐有限公司 | 移动终端切换方法、装置、设备及存储介质 |
CN114968283A (zh) * | 2022-05-31 | 2022-08-30 | 济南浪潮数据技术有限公司 | 一种容器镜像的拉取方法、装置、设备及可读存储介质 |
-
2023
- 2023-01-16 CN CN202310057881.XA patent/CN115794139B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114844879A (zh) * | 2022-03-25 | 2022-08-02 | 网宿科技股份有限公司 | 镜像管理方法、电子设备和存储介质 |
CN115499449A (zh) * | 2022-07-28 | 2022-12-20 | 阿里巴巴(中国)有限公司 | 镜像加速系统、方法及装置 |
Non-Patent Citations (1)
Title |
---|
陈卫 ; 郑炜 ; 汤毅 ; .基于KubeEdge的云边协同技术架构的探索.微型电脑应用.2020,(07),第159-161页. * |
Also Published As
Publication number | Publication date |
---|---|
CN115794139A (zh) | 2023-03-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN115794139B (zh) | 镜像数据处理方法、装置、设备以及介质 | |
US10097596B2 (en) | Multiple stream content presentation | |
US8316364B2 (en) | Peer-to-peer software update distribution network | |
CN102202050B (zh) | 预期响应预高速缓存 | |
JP6274584B2 (ja) | 広告処理方法及び装置 | |
RU2619181C2 (ru) | Система и способ для оптимизации передач загружаемого контента | |
US20230291808A1 (en) | Data processing method and apparatus, device and medium | |
US20130137511A1 (en) | Distributed server system and method for streaming game service | |
CN111372100A (zh) | 一种基于分布式选举的端到端内容分发网络系统和分发方法 | |
JP7464732B2 (ja) | 画像処理方法及びその装置、サーバ並びにコンピュータプログラム | |
WO2010141522A1 (en) | Qualified video delivery | |
CN109062663B (zh) | 镜像分发方法、装置及存储介质 | |
CN108683730B (zh) | 资源调度方法、业务服务器、客户终端、网络系统和介质 | |
CN104394182A (zh) | 一种实现内容分发网络加速的方法及源服务器 | |
CN111770172A (zh) | 消息中间件消费代理方法、装置、代理服务器及存储介质 | |
JP2022531339A (ja) | リソース構成方法、リソース構成装置、コンピューター機器、及びコンピュータープログラム | |
CN111625353B (zh) | 虚拟资源分发处理方法、装置、服务器及存储介质 | |
US20230107093A1 (en) | Data download method and apparatus, computer device, and storage medium | |
CN113926185A (zh) | 一种数据处理方法、装置、设备及存储介质 | |
CN112023402A (zh) | 游戏数据处理方法、装置、设备以及介质 | |
CN108616600B (zh) | 资源调度方法、客户服务器、节点设备、网络系统和介质 | |
CN112988377B (zh) | 用于云服务的资源分配方法、系统和介质 | |
JP2017126983A (ja) | 生中継データを共有する方法およびシステム | |
CN115955590A (zh) | 视频处理方法、装置、计算机设备、介质 | |
US20140149499A1 (en) | Remote request fulfillment and delivery |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40083086 Country of ref document: HK |