:
1.本发明专利属于云计算技术领域,尤其涉及一种高拓展的无服务器计算分布式调度系统。
背景技术:2.随着无服务器计算的成熟,未来预计更多类型的应用程序,如对响应延迟敏感的社交网络、电子商务应用将迁移到无服务器平台,这对平台的弹性扩缩容能力提出了更严峻的挑战。由于用户工作负载的不可预测性、突发性以及平台的一对一映射策略——每个函数调用请求被调度到一个单独的函数实例中,为实现承诺的弹性扩缩容能力,平台必须能够实时启动多个并发的函数实例以处理用户请求。例如,微软公开的用户数据中显示,一些函数以每秒大于3000次的速率被调用,导致数千个实例的并发启动。此外,世界领先的视频共享社交服务平台数据显示,一些函数的并发请求数甚至达到每秒千万级别。
3.弹性扩缩容分为实例调度和冷启动两个阶段。已有工作通过优化实例启动开销来缓解冷启动问题,但可扩展的实例调度技术尚未被研究。当前的开源无服务器平台,例如openfaas和openwhisk仍然依赖于集中式调度器进行实例调度,openfaas只能在99分位延迟小于100毫秒的情况下完成约30个实例的调度,调度2000个函数实例需要数十秒,远远无法满足延迟敏感型应用程序响应时间在100毫秒内的要求。
4.现有替代集中式调度器的研究主要有:(1)分布式调度器,多个没有集群全局视图的并行调度器仅依赖于探测进行调度。直到工作节点响应探测,请求才会被调度器转发。但该方法由于队首阻塞问题和调度器-节点间的高通信延迟导致调度效率低下。(2)自底向上调度器,集群存在一个全局调度器和每个节点上的本地调度器。请求将直接转发给本地调度器,并在本地资源不足时转发至全局进行最优决策。但在突发工作负载下,由于本地调度器的频繁失败,全局调度器易成为瓶颈而导致调度效率低下。
技术实现要素:5.针对现有技术存在的问题,本发明提供一种高拓展的无服务器计算分布式调度系统,使用“本地-中心”和局部探测结合的分布式调度方法,通过局部探测阶段增加了请求在本地调度器上调度成功的概率,还利用全局调度程序来避免在局部探测失败后的重复探测;具体采用请求优先在本地调度,必要时转发至全局调度的“本地-中心”的技术和缓解全局调度瓶颈的局部探测技术。该分布式调度技术包括三个阶段:本地检查、局部探测、全局调度。
6.本发明解决其现实问题是采取以下技术方案实现的:
7.一种高拓展的无服务器计算分布式调度系统,所述调度系统包括网关、中心层和本地层;所述中心层还包括自动扩缩容引擎和全局调度器;所述本地层包括在本地层的每个节点上设有本地调度器;其中:
8.所述自动扩缩容引擎用于处理网关发出的用户函数调用请求并判断是否生成扩
容任务;
9.所述本地调度器将接收到扩容任务根据本地检查阶段、局部探测阶段和全局调度阶段进行交互过程;
10.所述全局调度器对全局调度阶段发出扩容任务在集群的所有节点中找到最优的节点来进行任务的调度。
11.进一步,所述本地调度器包括注册存储库单元,优先级队列单元和任务处理单元;其中:
12.所述注册存储库单元:用于存储本地节点的函数配置文件、实例配置和资源使用状态;
13.所述优先级队列单元:根据扩容任务的最短剩余时间来选择优先执行的任务;所述优先级队列单元内部的队列采用堆数据结构实现,队列使用最短剩余时间算法决定任务的优先级;
14.所述任务处理单元:用于检查本节点的资源与扩容任务所需资源的大小关系,所述任务处理单元实现了接收和处理扩容任务的接口,以接收来自自动扩缩容引擎、其他本地调度器或全局调度器发送的任务请求。
15.进一步,所述本地调度器将接收扩容任务根据本地检查阶段、局部探测阶段和全局调度阶段进行交互过程;
16.在本地检查阶段:所述优先级队列单元会根据自动扩缩容引擎发出的扩容任务的最短剩余时间选择执行;当扩容任务从优先级队列中被取出时,所述任务处理单元将会检查任务需要的资源和本节点剩余资源的关系,以决定是否在本节点完成任务调度:
17.若本节点剩余资源大于扩容任务需要的资源,则扩容任务将会被调度在本节点,调度流程结束;若本节点剩余资源不足,则将调度流程将进入局部探测阶段;
18.在局部探测阶段:所述任务处理单元将会随机选择其它两个本地调度器并发送是否有足够的资源完成扩容任务的探测请求;接收到询问请求的两个本地调度器,将会通过其上任务处理单元检查本节点的资源是否足够,并向发出询问的本地调度器做出“成功”或“失败”的反馈;所述扩容任务将被调度到第一个反馈“成功”的本地调度器所在的节点上,结束整个调度流程;若询问的两个节点内部的本地调度器都反馈“失败”,则调度流程进入到全局调度阶段;
19.在全局调度阶段:当局部探测阶段发出的两个询问请求均反馈“失败”时,本地调度器会将扩容任务转发给全局调度器;所述全局调度器会根据扩容任务的最短剩余时间来选择优先执行任务;当扩容任务从优先级队列被取出时,所述全局调度器将会在集群的所有节点中找到最优的节点来进行该任务的调度,整个调度流程结束。
20.进一步,所述自动扩缩容引擎包括请求接收单元和计算单元;其中:
21.所述请求接收单元:用于接收网关发出的用户请求;
22.所述计算单元:根据用户发送的请求数目和集群中已有的实例数量,判断是否需要进行扩容任务。
23.进一步,所述全局调度器包括优先级队列单元和与所述本地调度模块交互的逻辑处理单元。
24.有益效果:
25.为了减少突发工作负载下的调度延迟,之前的研究提出了基于多个并行调度器探测的分布式调度方法,和以中心弥补本地调度失败的自底向上调度方法。但分布式调度器存在队首阻塞和通信开销问题,自底向上调度器依然存在集中式瓶颈问题。为了弥补上述方案的不足,本发明结合“本地-中心”调度与局部探测的高拓展分布式实例调度技术,在提高无服务器平台的实例调度吞吐量和弹性扩缩容能力方面有明显效果。
26.相比于现有工作,本发明识别并避免了他们存在的瓶颈:本发明通过局部探测技术增加了在本地调度器上调度成功的概率,避免了在资源紧张情况下,因本地调度频繁失败,全局调度器请求堆积导致的集中式调度瓶颈问题。同时本发明通过引入全局调度器避免分布式调度方法因探测失败而进行的不断重探测,大大提高了平台整体的调度吞吐效率。
27.相比于现有的工作,本发明具有显著的效果。本发明与采用集中式调度的开源无服务器计算平台openfaas相比,将99%的调度延迟减少了45倍。在同等实验条件下,本发明能够完成每秒十万次以上实例的调度,调度吞吐较分布式调度方法和自底向上调度方法增加了1.6倍和1.0倍。
28.本发明中本地调度器和全局调度器中追加了时间敏感的优先级队列,该队列使用最短剩余时间优先算法来调整调度顺序,以减少调度尾部延迟。结果表明,本发明支持在秒级调度超过十万个函数实例,以促进更大应用场景向无服务器计算迁移。
附图说明:
29.图1是本发明一种高拓展的无服务器计算分布式调度系统结构示意图。
30.图2是本发明一种高拓展的无服务器计算分布式调度系统交互过程示意图。
具体实施方式
31.本发明中提出了一种高拓展的无服务器计算分布式调度系统及其方法,以下结合图1对本发明专利的实施过程做进一步详细说明。
32.系统架构
33.本发明的核心是,使用本地调度器和全局调度器协作调度的方式,可以显著减少高并发调用场景下的实例扩容任务调度延迟,提高无服务器平台的弹性扩缩容能力。图1说明了本发明的整体架构,它采用“先本地后中心”的体系结构,架构在每个集群节点上加入一个本地调度器,并在中心层引入自动扩缩容引擎。本发明中一个实例扩容任务的调度流程分为三个阶段:(1)本地检查阶段,(2)局部探测阶段和(3)全局调度阶段。实例扩容任务首先被转发到本地调度器进行本地检查阶段,在本地资源不足时进行局部探测阶段,最后在探测失败时转为全局调度阶段。
34.具体来说,当用户发出的函数调用请求到达网关,网关将其转发至自动扩缩容引擎。自动扩缩容引擎的请求接收单元接受请求,并在计算单元中根据用户的请求数和集群中已存在的实例数判断是否需要进行实例扩容任务。若需要则将扩容任务随机转发至一个本地调度器中。任务进入本地调度器的优先级队列单元,队列内部根据最短剩余时间优先算法确定任务处理顺序,当该请求在队首被取出时,调度流程进入本地检查阶段,本地调度器的任务处理单元将检查该扩容任务需要的资源与本节点资源的关系,如果本节点有足够
的资源,则完成调度。否则,调度将进入局部探测阶段,图2说明了本发明的局部探测过程,本地调度器选择另外两个节点,向他们内部的本地调度器并发送探测请求,被探测节点的本地调度器中的任务处理单元将检查本节点资源资源与扩容任务需求资源的关系,并做出“成功”、“失败”的回复,该任务会被调度到先回复“成功”的节点上,调度流程随之完成。如果两个本地调度器都回复“失败”,该扩容任务将被转发到全局调度器的优先级队列单元中中,全局调度器将会选择优先级队列单元中最短剩余时间的请求,并根据整个集群的资源状态信息做出调度决策,完成任务调度。
35.1.系统实现
36.本发明在openfaas中实现,openfaas是一个建立在kubernetes之上的开源无服务器计算平台。本发明沿用了openfaas的整体架构,主要修改了中心层的全局调度器,并在平台中心层加入了一个自动扩容引擎模块,在平台本地层的每一个集群节点上加入了一个本地调度器模块。
37.本地调度器:本地调度器在集群的每个节点中作为kubernetes的独立守护进程实现。其中包括:(1)注册存储库单元:用于存储本地节点的函数配置文件、实例配置和资源使用状态,以实现高效、合理的调度决策。(2)优先级队列单元:单元内部的队列用堆数据结构实现,队列使用最短剩余时间算法决定任务的优先级。(3)任务处理单元:该单元用于检查本节点的资源与扩容任务所需资源的大小关系,同时,该单元实现了接收和处理扩容任务的接口,以接收来自自动扩缩容引擎、其他本地调度器或全局调度器发送的任务请求。当实例扩容任务调度流程完成时,该单元在实例pod的yaml文件中设置nodename属性,并直接在本地创建kubernetes pod以完成实例的扩容。
38.自动扩缩容引擎:本发明在平台中心层中设计添加了一个自动扩缩容引擎模块。其中包括:(1)请求接收单元:该单元实现了用于接收网关请求的接口,可以接受到网关转发的用户请求。(2)计算单元:该单元根据用户发送的请求数目和集群中已有的实例数量,判断是否需要进行实例扩容。此外该单元存储集群中所有节点的ip列表,在确定要扩容实例时,将实例扩容任务通过ip转发给随机的一个本地调度器,开始进行调度流程。
39.全局调度器:本发明修改了无服务器平台openfaas的默认全局调度器,在其内部加入优先级队列单元。队列使用短剩余时间算法决定任务的优先级。全局调度器从队列中取出剩余时间最短的任务,并根据集群的全局资源视图进行实例扩容任务的调度。
40.本发明并不限于上文描述的实施方式。以上对具体实施方式的描述旨在描述和说明本发明的技术方案,上述的具体实施方式仅仅是示意性的,并不是限制性的。在不脱离本发明宗旨和权利要求所保护的范围情况下,本领域的普通技术人员在本发明的启示下还可做出很多形式的具体变换,这些均属于本发明的保护范围之内。
技术特征:1.一种高拓展的无服务器计算分布式调度系统,所述调度系统包括网关、中心层和本地层;其特征在于:所述中心层还包括自动扩缩容引擎和全局调度器;所述本地层包括在本地层的每个节点上设有本地调度器;其中:所述自动扩缩容引擎用于处理网关发出的用户函数调用请求并判断是否生成扩容任务;所述本地调度器将接收到扩容任务根据本地检查阶段、局部探测阶段和全局调度阶段进行交互过程;所述全局调度器对全局调度阶段发出扩容任务在集群的所有节点中找到最优的节点来进行任务的调度。2.根据权利要求1所述的一种高拓展的无服务器计算分布式调度系统,其特征在于:所述本地调度器包括注册存储库单元,优先级队列单元和任务处理单元;其中:所述注册存储库单元:用于存储本地节点的函数配置文件、实例配置和资源使用状态;所述优先级队列单元:根据扩容任务的最短剩余时间来选择优先执行的任务;所述优先级队列单元内部的队列采用堆数据结构实现,队列使用最短剩余时间算法决定任务的优先级;所述任务处理单元:用于检查本节点的资源与扩容任务所需资源的大小关系,所述任务处理单元实现了接收和处理扩容任务的接口,以接收来自自动扩缩容引擎、其他本地调度器或全局调度器发送的任务请求。3.根据权利要求2所述的一种高拓展的无服务器计算分布式调度系统,其特征在于:所述本地调度器将接收扩容任务根据本地检查阶段、局部探测阶段和全局调度阶段进行交互过程;在本地检查阶段:所述优先级队列单元会根据自动扩缩容引擎发出的扩容任务的最短剩余时间选择执行;当扩容任务从优先级队列中被取出时,所述任务处理单元将会检查任务需要的资源和本节点剩余资源的关系,以决定是否在本节点完成任务调度:若本节点剩余资源大于扩容任务需要的资源,则扩容任务将会被调度在本节点,调度流程结束;若本节点剩余资源不足,则将调度流程将进入局部探测阶段;在局部探测阶段:所述任务处理单元将会随机选择其它两个本地调度器并发送是否有足够的资源完成扩容任务的探测请求;接收到询问请求的两个本地调度器,将会通过其上任务处理单元检查本节点的资源是否足够,并向发出询问的本地调度器做出“成功”或“失败”的反馈;所述扩容任务将被调度到第一个反馈“成功”的本地调度器所在的节点上,结束整个调度流程;若询问的两个节点内部的本地调度器都反馈“失败”,则调度流程进入到全局调度阶段;在全局调度阶段:当局部探测阶段发出的两个询问请求均反馈“失败”时,本地调度器会将扩容任务转发给全局调度器;所述全局调度器会根据扩容任务的最短剩余时间来选择优先执行任务;当扩容任务从优先级队列被取出时,所述全局调度器将会在集群的所有节点中找到最优的节点来进行该任务的调度,整个调度流程结束。4.根据权利要求1-3任一项所述的一种高拓展的无服务器计算分布式调度系统,其特征在于:所述自动扩缩容引擎包括请求接收单元和计算单元;其中:所述请求接收单元:用于接收网关发出的用户请求;
所述计算单元:根据用户发送的请求数目和集群中已有的实例数量,判断是否需要进行扩容任务。5.根据权利要求1所述的一种高拓展的无服务器计算分布式调度系统,其特征在于:所述全局调度器包括优先级队列单元和与所述本地调度模块交互的逻辑处理单元。
技术总结本发明公开了一种高拓展的无服务器计算分布式调度系统,所述调度系统包括网关、中心层和本地层;所述中心层还包括自动扩缩容引擎和全局调度器;所述本地层包括在本地层的每个节点上设有本地调度器;其中:所述自动扩缩容引擎用于处理网关发出的用户函数调用请求并判断是否生成扩容任务;所述本地调度器将接收到扩容任务根据本地检查阶段、局部探测阶段和全局调度阶段进行交互过程;所述全局调度器对全局调度阶段发出扩容任务在集群的所有节点中找到最优的节点来进行任务的调度;本发明结合“本地-中心”调度与局部探测的高拓展分布式实例调度技术,在提高无服务器平台的实例调度吞吐量和弹性扩缩容能力方面有明显效果。吞吐量和弹性扩缩容能力方面有明显效果。
技术研发人员:赵明洋 赵来平 李克秋
受保护的技术使用者:天津大学
技术研发日:2022.09.26
技术公布日:2022/12/16