基于镜像级元数据管理和负载感知的P2P下载镜像方法

文档序号:34311072发布日期:2023-05-31 21:19阅读:48来源:国知局
基于镜像级元数据管理和负载感知的P2P下载镜像方法

本发明属于云计算,具体的说是一种基于镜像级元数据管理和负载感知的p2p下载镜像方法。


背景技术:

1、函数即服务(faas)是一种新兴的云计算范式,相较于传统的基础设施即服务(iaas) 和平台即服务 (paas) 模型,faas更强调开发人员聚焦于业务逻辑实现,而将底层的服务器、存储和网络等基础设施的管理工作交由云服务提供商来完成,开发人员只需要编写自己的函数代码并上传到云平台。通常情况下,faas平台采用容器技术作为云函数运行的环境。而虚拟机创建新容器需要包括从慢速的镜像仓库下载镜像、创建容器实例和初始化语言运行时等步骤,其中拉取镜像特别耗时,尤其是当高并发的拉取镜像时,可能会导致镜像仓库出现网络带宽瓶颈。另外,相关研究表明大多数函数选择使用faas平台提供的流行镜像(如:python,nodejs等)来创建容器,而且不同函数需要创建容器的次数严重不均衡,体现在绝大多数函数需要创建容器的次数很少。

2、传统的p2p技术确实可以利用faas系统中虚拟机缓存的镜像数据提供镜像下载服务以加快创建容器的过程。但是,传统的方法为每个函数单独管理p2p下载的元数据对象,会导致绝大多数创建容器次数少的函数由于元数据对象失效而从慢速的镜像仓库拉取镜像,增加了创建容器的时延;而且传统的方法采用二叉平衡树结构组织元数据对象,既缺乏灵活性又不适合快速更新。另外,传统的p2p技术下载镜像数据时,不考虑上游虚拟机负载的高低,选择高负载的虚拟机提供镜像下载服务会导致下游虚拟机创建新容器具有较高的时延。


技术实现思路

1、本发明是为了解决上述现有技术存在的不足之处,提出一种基于镜像级元数据管理和负载感知的p2p下载镜像方法,以期能减少绝大多数创建容器次数少的函数从慢速镜像仓库拉取镜像的次数,并能选择轻负载的虚拟机来提供镜像下载的服务,从而能降低创建新容器的时延。

2、本发明为达到上述发明目的,采用如下技术方案:

3、本发明一种基于镜像级元数据管理和负载感知的p2p下载镜像方法,是应用于通用型faas系统中,所述通用型faas系统包括:用户users、调度器、镜像仓库和n台虚拟机,其中,每台虚拟机中均包含一个管理器,令所述镜像仓库的静态参数为registry={ipreg,portreg},ipreg、portreg分别表示镜像仓库的ip地址和服务端口,令n台虚拟机记为vm={vm1,vm2,...,vmi,...,vmn},vmi表示第i台虚拟机;1≤i≤n;其特点在于:

4、令所述第i台虚拟机vmi的静态参数为vali={ipi,porti},ipi、porti分别表示第i台虚拟机vmi的ip地址、管理器监听其他虚拟机下载请求的端口号;

5、令所述第i台虚拟机vmi在当前时间周期内的动态参数为loadi={ci,bwi,di};ci、bwi和di分别表示第i台虚拟机vmi在当前时间周期内的cpu平均负载、上行网络平均速率、待传输的数据量;

6、令所述第i台虚拟机vmi在当前时间周期内收到的m个p2p下载请求记为p2p_reqsi={ri1,ri2,...,rij,...,rim},rij表示第i台虚拟机vmi在当前时间周期收到的第j个p2p下载请求,且rij={dij,tij};dij、tij分别表示在当前时间周期下第j个p2p下载请求rij的镜像数据量、开始时间,1≤j≤m;

7、所述通用型faas系统中还设置有元数据管理器、负载监控器以及负载估算选择器,所述p2p下载镜像方法是按如下步骤进行:

8、步骤1、所述调度器接收用户users发送的函数functionid的调用请求reqid,并判断所述调度器内用于执行所述函数functionid的空闲容器所在的队列是否为空,若是,则顺序执行步骤1.1,否则,执行步骤8;

9、步骤1.1、所述调度器随机选择一个下游虚拟机vmdown,下游虚拟机vmdown从上游虚拟机vmup中下载标识为imageid的镜像,并基于所述imageid的镜像创建函数functionid的容器,从而利用函数functionid的空闲容器来服务所述调用请求reqid;

10、步骤1.2、所述调度器将下游虚拟机vmdown的静态参数valdown和镜像标识imageid作为参数传递给所述元数据管理器以获取上游虚拟机vmup的静态参数valup;

11、步骤2、所述元数据管理器收到valdown和imageid后,查询内部表1中是否存在表项<valdown-imageid,metadata>,其中,metadata表示元数据对象,且metadata={val1,val2},val1、val2为两个虚拟机的静态参数;若存在所述表项<valdown-imageid,metadata>,则将所述表项中metadata的val2作为上游虚拟机vmup的静态参数valup返回给调度器,并执行步骤4;若不存在所述表项<valdown-imageid,metadata>,则所述元数据管理器创建元数据对象metadata={valdown,valunknown},并向内部表1中添加表项<valdown-imageid,metadata>;其中,valdown表示下游虚拟机vmdown的静态参数,valunknown表示任一虚拟机vmunknown的静态参数;

12、步骤3、所述元数据管理器查询内部表2中是否存在表项<imageid,linkedlist>,其中,linkedlist为镜像imageid的p2p分发网络的链表结构,且linkedlist={hp,tp},hp和tp分别表示链表linkedlist中指向元数据对象的头指针和尾指针;

13、若不存在所述表项<imageid,linkedlist>,则所述元数据管理器先创建链表结构linkedlist,再将所述元数据对象metadata中valunknown的值改为所述镜像仓库的静态参数registry={ipreg,portreg}后插入所述链表结构linkedlist中,然后向内部表2中添加表项<imageid,linkedlist>,最后将所述镜像仓库的静态参数registry作为上游虚拟机vmup的静态参数valup返回给调度器,并执行步骤4;

14、若存在所述表项<imageid,linkedlist>,则从链表结构linkedlist的头指针hp开始,所述元数据管理器先选择n个元数据对象,并根据元数据对象metadata中val1的参数组成当前时间周期下待选虚拟机集合set={vmset,1,vmset,2,...,vmset,k,...,vmset,n},其中,vmset,k表示第k台待选虚拟机;再将set作为参数传递给所述负载估算选择器以获取待选虚拟机集合set当前时间周期下最轻负载的虚拟机vmset,lightest;然后先将所述元数据对象metadata中valunknown的值改为虚拟机vmset,lightest的静态参数valset,lightest,再将元数据对象metadata插入所述链表linkedlist的尾指针tp之后,同时所述链表结构linkedlist的头指针hp适时向后移动;最后将所述虚拟机vmset,lightest的静态参数valset,lightest作为上游虚拟机vmup的静态参数valup返回给调度器;1≤k,lightest≤m;

15、步骤4、所述调度器接收到上游虚拟机vmup的静态参数valup后,将所述静态参数valup、函数functionid和镜像标识imageid传递给下游虚拟机vmdown的管理器,并发送创建容器的命令;

16、步骤5、所述下游虚拟机vmdown中的管理器接收到创建容器的命令后,根据静态参数valup向上游虚拟机vmup发送镜像标识为imageid的镜像下载请求;

17、步骤6、所述上游虚拟机vmup监听到所述下游虚拟机vmdown发送的镜像下载请求后,采用http协议将标识为imageid的镜像数据传输给所述虚拟机vmdown;

18、步骤7、所述下游虚拟机vmdown下载标识为imageid的镜像数据完成后,基于所述标识为imageid的镜像创建函数functionid的空闲容器,并将所述空闲容器添加到调度器内函数functionid的空闲容器所在的队列中;

19、步骤8、所述调度器从函数functionid的空闲容器所在队列的队首中取出空闲容器,并将所述调用请求reqid转发给所述队首的空闲容器来执行,并将执行结果反馈给用户users。

20、本发明所述的基于镜像级元数据管理和负载感知的p2p下载镜像方法的特点也在于,步骤3中的所述负载估算选择器是按如下步骤获取最轻负载的虚拟机vmset,lightest:

21、步骤3.1、所述负载估算选择器接收到待选虚拟机集合set后,将所述待选虚拟机集合set传递给所述负载监控器以获取当前时间周期下待选虚拟机集合中所有虚拟机的动态参数loadset={loadset,1,loadset,2,...,loadset,k,...,loadset,n};loadset,k表示第k台待选虚拟机vmset,k在当前时间周期下的负载;

22、步骤3.2、所述负载估算选择器根据负载信息loadset,计算待选虚拟机集合set中各虚拟机在当前时间周期下负载的总得分集合sset={sset,1,sset,2,...,sset,k,...,sset,n};sset,k表示当前时间周期第k台待选虚拟机vmset,k负载loadset,k的总得分;

23、步骤3.3、所述负载估算选择器从总得分集合sset中选择得分最高的虚拟机作为当前时间周期待选虚拟机集合set中最轻负载的虚拟机vmset,lightest。

24、步骤3.1中的负载监控器是按如下过程获取待选虚拟机集合中所有虚拟机的动态参数:

25、所述负载监控器接收到待选虚拟机集合set后,则判断当前系统时间是否属于当前时间周期;若是,则所述负载监控器根据待选虚拟机集合set中各虚拟机的标识,从内部的cpu平均负载表tc、上行网络平均速率表tbw和p2p下载请求待传输数据量表td中查询待选虚拟机集合set中各虚拟机的动态参数,并组成当前时间周期下待选虚拟机集合所述负载信息loadset,返回给负载估算选择器;

26、若不是,则表示当前系统时间属于下一个时间周期,先更新新一周期下的cpu平均负载表tc、上行网络平均速率表tbw和待传输数据量表td,再查询待选虚拟机集合set中各虚拟机的动态参数,并组成待选虚拟机集合所述负载信息loadset,返回给负载估算选择器。

27、所述负载监控器是按如下过程更新cpu平均负载表tc、上行网络平均速率表tbw和p2p下载请求待传输数据量表td:

28、先记录当前系统时间为下一个时间周期的开始时间;

29、接着所述监控器通过http请求收集最新时间周期下vm中各虚拟机的待处理的信息i={i1,i2,...,ii,...in},ii表示最新时间周期下第i台虚拟机待处理的信息,ii={ci,bytesi,2,p2p_reqsi},ci、bytesi,2和p2p_reqsi分别表示最新时间周期下的第i台虚拟机vmi的平均cpu负载、网卡已经传输的字节总数和收到的m个p2p下载请求;

30、负载监控器直接用ci更新第i台虚拟机vmi的cpu平均负载表tc;

31、计算最新时间周期下第i台虚拟机vmi的上行网络平均速率bwi=(bytesi,2-bytesi,1)/t后更新上行网络平均速率表tbw;bytesi,1表示虚拟机vmi在上个时间周期下网卡已经传输的字节总数,t表示一个周期的时间长度;

32、计算最新时间周期下第i台虚拟机vmi待传输的数据量后更新待传输数据量表td,其中,dij、tij分别表示上个时间周期下第i台虚拟机vmi第j个p2p下载请求rij的镜像数据量、开始时间;tcur是当前系统时间,p2p_bwdefault是通用型faas系统中各台虚拟机间p2p分发默认的最大带宽。

33、负载估算选择器计算当前时间周期下第k台待选虚拟机vmset,k负载loadset,k的总得分sset,k=w1×sset,k,1+w2×sset,k,2+w3×sset,k,3,其中,sset,k,1表示第k台待选虚拟机vmset,k平均cpu负载的得分,且sset,k,1=1-cset,k/max{cset,1,cset,2,...,cset,k,...,cset,n},cset,k表示第k台待选虚拟机vmset,k平均cpu负载;sset,k,2表示第k台待选虚拟机vmset,k的上行网络平均速率负载得分,且sset,k,2=1-bwset,k/bwdefault,bwset,k表示第k台待选虚拟机vmset,k的上行网络平均速率负载,bwdefault是虚拟机间设置的最大带宽;sset,k,3表示第k台待选虚拟机vmset,k待传输的数据量负载得分,且sset,k,3=1-dset,k/max{dset,1,dset,2,...,dset,k,...,dset,n};dset,k表示第k台待选虚拟机vmset,k待传输的数据量,w1、w2、w3分别为三个得分的权重系数。

34、与现有技术相比,本发明的有益效果在于:

35、本发明通过元数据管理器为每个镜像单独管理p2p分发网络中虚拟机的元数据对象,使得绝大多数创建容器次数少的函数可以利用faas系统中其他函数缓存的镜像,将许多从慢速镜像仓库的拉取请求转变成faas系统内p2p的镜像拉取请求,降低了创建容器的时延。

36、本发明中,元数据管理器内部采用双向循环链表结构来组织p2p分发网络中虚拟机的元数据对象,与树形结构相比,不仅更具有灵活性,而且降低了单次查找、更新内部表的时间复杂度,从而缩短了关键路径所消耗的时间,降低了创建容器的时延。

37、本发明通过负载估算选择器引入感知虚拟机负载的机制,使得调度器能为下游虚拟机选择p2p分发网络中负载最轻的虚拟机提供镜像下载服务,可以缩短下游虚拟机下载镜像消耗的时间,从而降低了创建容器的时延。

38、本发明中通过负载监控器收集并预处理虚拟机的负载信息,当收到负载估算选择器获取待选虚拟机负载信息的请求时,可以快速予以回应,尽量缩短了关键路径所消耗的时间。另外,负载监控器以http请求周期异步的方式收集虚拟机的负载信息,给系统带来的额外开销比较低。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1