技术领域
本发明涉及无服务器计算技术领域,具体地指一种无服务器计算中基于延迟和成本均衡的动态任务放置方法。
技术背景
云计算概念自2006年被谷歌提出以来,各种计算机资源,比如基础设施、平台、软件等都被当做一种服务提供给用户。先后出现了SaaS(软件即服务)、PaaS(平台即服务)、IaaS(基础设施即服务)等多种云服务。云计算的核心思想,是将大量用网络连接的计算资源统一管理和调度,构成一个计算资源池向用户按需服务。它具有如下特点:计算资源集成提高设备计算能力;分布式数据中心保证系统容灾能力;软硬件相互隔离可以减少设备依赖性;平台模块化设计体现高可扩展性;虚拟资源池为用户提供弹性服务;按需付费降低使用成本。如今,FaaS(函数即服务)以其独特的付费方式(甚至可以精确至毫秒级),简单易用的开发模式吸引了许多开发人员。
无服务器计算,是一种在使用的基础上提供后端服务的云计算方法。无服务器提供程序允许用户编写和部署代码,而无需担心底层基础架构。从无服务器供应商处获得后端服务的公司将根据其计算收费,并且无需预留和支付固定数量的带宽或服务器数量产生的费用,因为该服务是自动扩展的。因此,无服务器计算具备诸多以往传统云计算所不具备的特性和优势:因为无服务器仅提供后端服务,成本可以比以往控制的更精准;无服务器架构是自动扩展的,无需开发人员担心底层架构;使用无服务器计算,开发人员可以创建独立执行单一目的的简单函数,例如进行API调用;无服务器架构显然可以加快程序开发周期,可以有效缩短产品上市时间。
无服务器计算正在逐渐成为一种进行云应用程序部署时被优先考虑的模式。但是它依然有一些尚需解决的问题,如资源调度中的冷启动问题,任务放置与事件派发中的算法效率仍有待提高等等。我们在无服务器计算的背景下研究任务放置问题,在无服务器计算模型中,开发人员编写可由各种事件触发的无状态函数。每个函数在自己的容器中执行。开发人员指定容器资源分配,云中的容器由云提供商进行编排和配置。而任务放置是无服务器计算的第一道门槛,是一块尚需优化的技术领域。
无服务器计算的功能性能取决于输入和应用特性、从边缘设备到云的网络传输、容器资源以及存储功能结果的时间,一些云平台还提供了在边缘设备上执行函数的框架。然而以往边缘设备作为终端设备都扮演着数据消费者的角色,但随着物联网与云计算技术的不断发展,智能终端设备也具有生产数据的能力,因此,边缘设备利用云计算网络的边缘节点,或者说数据产生源的附近节点进行计算是一个可行的研究方向。
发明内容
本发明的目的在于克服现有技术的不足,本发明的目的是针对现有无服务器平台任务放置策略效率的不足的问题,而提出一种无服务器计算中基于延迟和成本均衡的动态任务放置方法。
为实现上述目的,本发明所设计的无服务器计算中基于延迟和成本均衡的动态任务放置方法,其特殊之处在于,所述方法包括步骤:
1)输入一个新的待处理任务至边缘设备,由预测器分别预测所述任务在边缘设备中与在无服务器中的执行时间与成本,将结果送至决策引擎;
2)在决策引擎中,根据延迟与成本均衡的算法决定将所述任务留在边缘设备或送至无服务器中进行计算,并且会将决策数据传回预测器中以更新服务器状态;如果在边缘设备的运算器中计算,则将所述任务送至边缘设备运算器队列末尾等待执行,转步骤3.1);如果在无服务器中进行计算,将所述任务上传至无服务器中,转步骤3.2)。
3.1)在边缘设备运算器队列中出列后,由运算器计算得出所述任务执行结果。
3.2)将所述任务上传至无服务器平台,选择合适的容器进行计算,优先选择尚未销毁且满足配置需求的最小容器;
4)计算完成后,将结果上传至云服务器中的存储桶中。
优选地,所述任务在无服务器中的执行时间TS(f
TS(f
CostS(f
其中,UpS(f
优选地,所述任务在边缘设备中与在无服务器中的执行时间TE(f
TE(f
CostE
其中,CompE(f
优选地,所述任务在无服务器中的TS(f
1.1)上传时间UpS(f
UpS(f
1.2)容器启动时间StratS(f
1.3)无服务器中的计算时间CompS(f
CompS(f
1.4)将运算结果上传至云服务器所需的时间StoreS(f
1.5)在任务中计算的成本CostS(f
CostS(f
其中δ代表占用服务器收费系数;
1.6)容器从调用函数结束到销毁之间的时间,预测器使用一个UpdateCIL数据结构来维护无服务器中所有容器的状态。
优选地,所述任务在边缘设备中的执行时间TE(f
2.1)边缘设备上的计算时间CompE(f
CompE(f
2.2)计算结果的上传时间UpE(f
2.3)将是运算结果上传至云服务器所需时间StoreE(f
2.4)在边缘计算中的成本CostE取固定值;
2.5)对于边缘设备中的任务,由预测器维护一个边缘设备任务的队列,并以T
优选地,所述步骤2)在决策引擎中,优化目标如下:
其中,TS(f
优选地,所述无服务器任务的上传时间UpS(f
优选地,所述延迟与成本均衡的算法采用基于强化学习的Q-Learning算法对任务放置进行预测。
优选地,所述无服务器中使用的容器启动时间StratS(f
优选地,所述训练集的参数a
现有技术中,无服务器计算中使用的传统任务放置算法通常只考虑在成本约束下的延迟最小化或在延迟约束下的成本最小化。但是用户通常并不会这么极端地要求延迟或成本的最小化,而是更愿意在牺牲一部分延迟或成本的条件下,充分考虑它们之间的关系,以求达到最平衡的效果。另外,无服务器计算中的任务放置方法少有考虑组合边缘计算以减少成本的方法。现如今,智能设备相当普及,智能设备的算力也愈发强大,充分利用智能边缘设备的算力,减少任务延迟,降低成本是合理的选择。
本发明提出的无服务器计算中基于延迟和成本均衡的动态任务放置方法,是一种结合了边缘计算的优势,综合考虑了延迟和成本均衡问题的方法;它根据无服务器与边缘设备的状态动态地决策如何放置任务,尤其适合运用在采用智能边缘设备输入的无服务器计算环境中,可以有效提高完成任务的效率,对于端到端之间的延迟,可以获得近三个数量级的延迟减少;并且对于成本也有很好的控制效果。
附图说明
图1为无服务器计算中基于延迟和成本均衡的动态任务放置方法的流程图。
图2为无服务器计算中基于延迟和成本均衡的动态任务放置方法的模型。
具体实施方式
以下结合附图和具体实施例对本发明作进一步的详细描述。
本发明提出的无服务器计算中基于延迟和成本均衡的动态任务放置方法,如图1和图2所示,包括如下步骤:
1)输入一个新的待处理任务至边缘设备,由预测器分别预测所述任务在边缘设备中与在无服务器中的执行时间与成本,将结果送至决策引擎。
任务在无服务器中的执行时间TS(f
TS(f
CostS(f
其中,UpS(f
任务在无服务器中的执行时间TS(f
1.1)上传时间UpS(f
UpS(f
1.2)StratS(f
1.3)无服务器中的计算时间CompS(f
CompS(f
1.4)StoreS(f
1.5)在任务中计算的成本CostS(f
CostS(f
其中δ代表占用服务器收费系数,可以根据无服务器供应商的收费要求可以很简单的得出;
1.6)此外,容器从调用函数结束到销毁之间的时间,预测器使用一个UpdateCIL数据结构来维护无服务器中所有容器的状态。
边缘设备中计算不占用服务器资源,成本是固定成本。仅计算边缘设备对函数计算所需的时间,因此,任务在边缘设备中与在无服务器中的执行时间TE(f
TE(f
CostE
其中,CompE(f
任务在边缘设备中的执行时间TE(f
2.1)边缘设备上的计算时间CompE(f
CompE(f
2.2)UpE(f
2.3)StoreE(f
2.4)CostE是在边缘计算中的花费,而边缘云仅需要对设备注册进行缴费,定价根据云服务提供商而定,取固定值;
2.5)对于边缘设备中的任务,由预测器维护一个边缘设备任务的队列,并以T
2)在决策引擎中,根据延迟与成本均衡的算法决定将所述任务留在边缘设备或送至无服务器中进行计算,并且会将决策数据传回预测器中以更新服务器状态;如果在边缘设备的运算器中计算,则将所述任务送至边缘设备运算器队列末尾等待执行,转步骤3.1);如果在无服务器中进行计算,将所述任务上传至无服务器中,转步骤3.2)。
从上述步骤1)与2)中分别得到了TS(f
为了平衡延迟和成本之间的关系,我们使用基于强化学习的Q-Learning算法将延迟和成本的关系公式化。通过构建并维护Q-Table表格,得到结果的最大期望估计。
3.1)在边缘设备运算器队列中出列后,由运算器计算得出所述任务执行结果。
3.2)将所述任务上传至无服务器平台,选择合适的容器进行计算,优先选择尚未销毁且满足配置需求的最小容器;
4)计算完成后,将结果上传至云服务器中的存储桶中。
无服务器任务的上传时间UpS(f
线性预测
无服务器任务的上传时间UpS(f
第i个任务f
T
其中s
以均方差公式作损失函数如下:
其中n是一批任务的数量,如果n太小甚至等于1,均方差公式的波动可能很大;如果n取全部样本集,可以保证公式的稳定性,但随着任务数量的增加,每次迭代都要将所有样本数据重新计算,计算压力会随之增加。因此我们折中取n=20,即最近20次任务用于计算,不仅一定程度上确保loss的计算和参数更新具有代表性,又减少了计算资源的使用。
将T
参数更新公式如下,每次迭代就按照一定学习率λ向反方向更新参数a、b。学习率λ:
均值预测
无服务器中使用的容器启动时间StratS(f
利用强化学习对任务放置进行预测
首先通过下式得到TS(f
TS(f
CostS(f
TE(f
CostE取固定值
然后,采用基于强化学习的Q-Learning算法对任务放置进行预测。建立状态-动作矩阵R-Table,来记录在何种状态下作何种动作的奖励:
预测器在与任务互动的过程中产生了一个序列,马尔科夫决策过程就是对这一序列决策的公式化过程。因此任务从该如何放置任务最优的问题转化为求到第T次任务放置时根据状态和动作确定的最大累计奖励策略的期望:
通过Bellman方程对马尔科夫决策过程求最佳决策序列,可以以状态的累计奖励求期望,得出当前状态s的状态值函数V(s),评价当前状态的好坏:
V
=E
因此根据上式,用V*(s)表示最佳累计期望:
类似地,构建维护Q-Table表格,获取在某一状态s下采取动作m能获得的收益期望:
更新状态动作值函数Q(s,m)采用的方法是时间差分法:选取下一个状态s'中最大的Q(s',m')乘以衰变值γ再加上真实回报值R作为Q现实,然后将Q(s,m)作为Q估计:
Q(s,m)=Q(s,m)+a[R(s,m)+γmaxQ(s',m')-Q(s,m)]
其中a是学习率,设定一个较大的初值1,然后在每一定迭代次数后对学习率减半;γ是奖励衰变系数,取值在0~1之间,值越大,就代表越考虑后续状态能带来的价值。
算法使用的相关参数定义如下:
(1)某一时刻的状态s∈S:共定义了三个状态,其中s1是初始化状态;s2是上一项任务分配给边缘设备的状态;s3是上一项任务分配给无服务器的状态。当第一个任务传入时,是初始化状态s1;如果任务分配给边缘设备,状态转入s2;任务分配给无服务器,状态转入s3。
(2)采取的动作a∈A:共定义了两个动作,m1是将任务分配给边缘设备;m2是将任务分配给无服务器。
(3)奖励R(s,a):在当前s状态下执行m动作所能获得的奖励R。我们分别将在无服务器中或在边缘设备中放置某一任务f
(4)状态动作值函数Q(s,m):在当前状态s下执行动作m所能获得的奖励的期望。会随着新任务不断放置,根据时间差分法更新:
Q(s,m)=Q(s,m)+a[R(s,m)+γmaxQ(s',m')-Q(s,m)]
其中a是学习率,我们设定一个较大的初值1,然后在每一定迭代次数后对学习率减半;γ是奖励衰变系数,取值在0~1之间,值越大,就代表越考虑后续状态能带来的价值。我们的样本容量一般很大,对后续状态的价值进行考虑也很有必要。
调度方法的伪代码描述
(1)输入边缘设备的配置σ
(2)输入边缘设备注册费用CostE。
(3)while true
(4) 输入待执行任务f
(5) 由预测器计算得出TS(f
(6) if maxQ(s
(7) 初始化Q-Table矩阵,初值全设为0。
(8) 根据R-Table矩阵对任务进行放置。
(9) else if maxQ(s
(10) 将任务分配给无服务器,根据UpdateCIL模块寻找满足任务配置要求的最小容器,没有就创建新的容器以满足配置要求。
(11) 在调用成本Cost上加上这次调用函数的成本CostS(f
(12) else
(13) 将任务分配给边缘设备,进入边缘设备的任务执行队列等待执行。
(14) end if
(15) 根据时间差分法更新Q-Table矩阵。
(16)end while
(17)return Cost+CostE,max{TS(f
由算法的伪代码描述可以得到,首先添加待执行任务f
最后需要说明的是,以上具体实施方式仅用以说明本专利技术方案而非限制,尽管参照较佳实施例对本专利进行了详细说明,本领域的普通技术人员应当理解,可以对本专利的技术方案进行修改或者等同替换,而不脱离本专利技术方案的精神和范围,其均应涵盖在本专利的权利要求范围当中。
机译: 基于共识的多应用环境中分布式任务分配系统,使用任务划分和服务器实例动态分组实现负载均衡
机译: 游泳池电动汽车的成本效益优化调度和服务执行方法,涉及基于计算效率动态创建和调整游泳池电动汽车服务任务的工作计划
机译: 将电话呼叫动态路由到一个由多个前提服务器和基于网络的服务器组成的计算机电话服务器中