一种面向边缘云系统的软件微服务组合优化方法与流程

文档序号:24051607发布日期:2021-02-23 22:38阅读:280来源:国知局
一种面向边缘云系统的软件微服务组合优化方法与流程

[0001]
本发明涉及信息集成和软件工程应用技术领域,特别涉及一种面向边缘云系统的微服务组合的优化方法。


背景技术:

[0002]
自“微服务架构”出现之后,软件应用系统的设计就朝着以若干组可独立部署的服务的方式转变。相比于传统的单块开发风格,微服务更注重于通过开发一组小型服务的方式来开发一个独立的应用系统,其中的每个小型服务都运行在各自的进程中。这些服务围绕业务功能进行构建,并能通过全自动的部署机制来进行独立部署。
[0003]
单块应用系统是以一个单个单元的方式来构建的。随着越来越多的应用系统被部署到云端,软件的变更受到了很大的限制,一旦更改应用系统中某一部分,就需要将整个单块应用系统进行重新构建和部署。显然,单块应用系统逐渐难以保持一个良好的模块化结构。对于这种局限性,微服务的架构可以很好地进行填补。在微服务中,每一个服务能提供一个稳固的模块边界,甚至能允许使用不同的编程语言来编写不同的服务。微服务“组件化”的特征表现为将软件分解为诸多服务,可以通过web service请求或远程过程调用的方式进行通信。
[0004]
随着目前用户的需求越来越多,也越来越复杂,原来单个服务所能解决的问题越来越少,复杂性的增加使得服务组合越来越重要,这样将微服务组合起来能解决更多的问题,而且在软件工程的概念上提高了聚合程度,降低了耦合程度,在组合的基础上维护起来更加方便,增加新的功能和减少原来的功能更加容易,只要单独的微服务模块经过严格的测试,各个方面的参数都满足要求,我们就可以放心的来使用,并且在发现错误后可以很快的定位,最终的服务是经过测试好的微服务组合起来的,并且单个微服务模块是正确的。这就使得微服务组合的应用越来越广泛。
[0005]
在云计算环境中,将多个微服务组合成一个软件应用系统,也就是根据业务功能将系统分解为若干服务。每个人都可以使用不同的编程语言和技术工具来开发自己的微服务模块,而随着发布的微服务数量的大量增加,软件应用系统选择使用何种微服务就成为了一个困难的选择。这是由于广泛存在的服务异构问题造成的,这样的问题降低了服务发现,匹配和选取的准确率以及服务之间互操作的能力,影响组合服务的有效性和正确性,成为动态组合发展的瓶颈之一。
[0006]
微服务的不确定性问题也比较突出,不确定性问题包括微服务是否可用是不确定的,可以采用微服务的服务质量的标准,引入微服务的评价中。微服务的服务质量(quality ofservice,qos)是动态变化的,是不可控的,是不同的,当然用户对微服务质量qos的要求是不同的,对于不同微服务应用领域,微服务的组合模式和关联关系是不同的。不确定性问题给微服务组合带来的问题是多种多样的,它影响着系统的有效设计、开发、可靠性、可用性以及质量问题。
[0007]
微服务目前已经在软件应用系统开发上得到了应用,服务质量qos问题对于微服
务的成功应用非常关键,如何提供具有qos保证的微服务是目前微服务研究和应用的一个热点问题,从服务组合的角度看,如何从大量微服务中选择合适的微服务并进行优化组合,以使得服务组合服务的qos满足需求,是微服务组合研究中的一个重要问题。
[0008]
对于如今的微服务组合,大多针对的是云计算环境,对于云计算,为了提高成本效率,通常将多个微服务同时放置在服务器上,但随着服务器资源(核心,缓存,带宽等) 的增加以及微服务的多样性,调度探索空间迅速扩大,云计算采用微服务和容器技术增加云计算的弹性和可扩展性,在容器中部署微服务,为服务增加多个副本,以此平衡负载。而边缘计算是将任务下沉到网络边缘端,当边缘云也为用户提供微服务时,为了满足用户日益复杂的应用需求,微服务组合也需要应用在边缘环境中,相关的服务组合算法也需要改进,以适应边缘环境下的服务组合。
[0009]
在微服务组合中,一个微服务组合中各个服务的选配问题,这是复杂的组合优化问题,即在大量的微服务集合中搜索满足一定的服务质量且符合用户的需求的组合。求解该问题不但耗时,而且很难找到最佳微服务组合方案,求解的结果直接影响微服务组合的质量和成本,特别在边缘环境中,各边缘服务器分散地分布在各个位置,如果需要对部署在边缘服务器上的微服务进行组合,需要很高的成本。针对这一问题,采用智能优化算法求解微服务组合优化问题是目前的主流思路。这样在一定程度上对微服务组合进行了优化,但仍然存在以下不足:
[0010]
1)由于随着微服务的数量增大,其计算量成指数增长,所以求解优化问题的效率低下;
[0011]
2)在搜索最优解过程中,随机搜索策略不能保证最终解的多样性,需要新的搜索策略;
[0012]
3)求解微服务组合优化问题时,不但需要考虑微服务的选取,还需要考虑微服务之间的逻辑关系问题;
[0013]
4)边缘环境中由于边缘服务器的位置分散,导致微服务也处于分散状态,很难对微服务进行组合,组合优化算法需要考虑边缘环境的特点;
[0014]
5)服务注册中心存储的数据随时可能受到恶意攻击,最主要的就是篡改服务属性值,保证存储在服务注册中心的各服务质量属性值安全可靠也成为一个很重要的问题。


技术实现要素:

[0015]
发明目的:本发明的目的是提供一种面向边缘云系统的软件微服务组合优化方法,在面向边缘计算的软件微服务组合的环境中,实现在边缘端就近控制满足用户服务需求的前提下,保证微服务组合的qos服务质量达到最优,并且进一步提高了微服务组合的效率,同时也保证提供的微服务的服务质量的可靠性。
[0016]
技术方案:本发明所述的一种面向边缘云系统的软件微服务组合优化方法,包括如下步骤:
[0017]
s1:用户提交自己的任务,任务中包括相对应的任务输入以及预想的输出结果,该任务提交到边缘云中,由边缘编排管理器接收,并通过注册中心得到部署在各个边缘服务器中微服务的信息,进行组合服务的选择;
[0018]
s2:引入捕食搜索策略,采用捕食搜索策略在全局求得一个可行的服务链,即搜索
一条满足用户微服务组合要求的服务链;
[0019]
s3:可行服务链的长度为m,搜索可行服务链上每个微服务对应的候选服务,即将与可行服务链上各微服务具有相同输入集合和输出集合的微服务放入同一个服务类中,得到m个候选服务类;
[0020]
s4:在候选服务类中,使用具有混沌性质的余切序列依次从各候选服务类中选择一个候选服务,形成一个微服务组合,该微服务组合映射为一个驱光个体,依照前一个驱光个体进行混沌初始化n-1次,这就得到n个驱光个体;
[0021]
s5:根据具有个性化的适应度函数来评价这n个微服务组合方案,找到这n个微服务组合方案中的最优的微服务组合方案,并判断对应的适应度函数值是否达到理论最优,如果是,则该微服务组合方案即为全局最优微服务组合方案;否则,执行s6,当找到最终的最优微服务组合方案或者迭代次数达到上限,则停止,输出停止时的最优的微服务组合方案;
[0022]
s6:用混沌扰乱规则更新20%的驱光个体的微服务组合方案,这20%的驱光个体是选择10%的当前迭代中适应度值最优的驱光个体以及10%的适应度值最差的驱光个体,其余的驱光个体依然按照原本组合算法的位置变换的公式进行计算,20%的驱光个体需要进行位置更新,之后在局部搜索,更新完成后,返回执行s5;
[0023]
s7:通过组合算法的求得基于当前服务链的全局最优解,或者达到最大迭代次数,对应的服务链为当前最优服务链。微服务组合选择成功之后,对用户的任务进行执行,之后边缘编排管理器会将执行之后的结果返回给用户,并对相应的微服务中qos各属性值进行更新,并将更新的结果保存在微服务注册中心;
[0024]
s8:边缘编排管理器会将服务注册中心中注册的微服务的qos属性值保存在服务注册中心中,利用hash树的概念对微服务的qos属性值进行两两哈希,类似于树形结构最后得到一个hash根。边缘编排管理器将这个hash值用私钥加密,然后广播给各个边缘服务器,边缘服务器会用保存的公钥对广播信息解密,保存这个hash值。边缘服务器会定时询问注册中心,看是否注册中心中保存的哈希根与本地存储哈希值是否一致。如果不一致,则判断服务注册中心保存服务qos属性值遭到篡改,利用哈希树的性质可以很快定位到哪个服务的属性值遭到了修改,也就可以定位到具体的边缘服务器。
[0025]
作为优选,所述s2的具体过程如下:
[0026]
s2.1:设置searchset集合为空,搜索所有的微服务,将满足用户微服务组合要求的微服务加入服务链,同时将该微服务的输入集合存放于searchset集合中;
[0027]
s2.2:在将满足用户微服务组合要求的微服务加入服务链之前,判断searchset集合中是否已有该微服务的输入集合,若没有,则将该微服务加入服务链,否则,不加入;
[0028]
s2.3:当前搜索结束后,若没有得到可行服务链,则将searchset集合清空,在没有被搜索过的微服务中重复s2.1-s2.2,直到找到一条可行服务链或到达最大搜索次数,停止搜索。
[0029]
作为优选,所述s4的具体过程如下:
[0030]
s4.1:可行服务链的长度为m,j=0,

,m-1,第j个微服务有k
j
个候选服务;
[0031]
s4.2:确定k
j
的数量级根据与第j个微服务对应的余切序列值截
取余切序列值小数点后φ
j
位作为整数值u
i,j
,i=0,

,n-1,n为驱光个体总数;
[0032]
s4.3:将u
i,j
对k
j
取余,产生混沌值ξ
i,j
,混沌值与第j个微服务对应的候选服务类中的一个候选服务对应,该值与该服务对应的候选服务中的某一个服务对应,则所对应的候选服务被选中,同样,服务链上的所有服务均执行该操作后,则第i个驱光个体的位置x
i
初始化完成。
[0033]
作为优选,所述s5中适应度函数值的计算公式为:
[0034][0035]
其中,f代表适应度值,r表示服务链上各微服务可靠性的积,t表示服务链上各微服务响应时间的和,c表示服务链上各微服务执行成本的和,a表示服务链上各微服务可用性的积,α分别表示r的权重,β表示a的权重,γ表示t的权重,η表示c的权重,且α+β+γ+η=1。
[0036]
作为优选,所述s6的具体过程为:
[0037]
s6.1:筛选的20%的驱光个体需要按照混沌序列更新自己的位置,公式如下:
[0038][0039]
上式中表示驱光个体i在t次迭代的第j维的位置,也就是服务链第j个分量的选择方案。位置更新也需要按照余切序列来计算,在第t+1次迭代时,第i个驱光个体的第j维位置更新是按照第t次得出的余切序列来进行迭代得出,其中h表示该驱光个体的维度,也就是服务链的长度,n表示最大迭代次数。更新之后的余切函数值需要根据s4进行计算对应的候选服务;
[0040]
s6.2:20%的驱光个体进行局部搜索,找出自己的局部微服务组合最优方案,这里设置了一个混沌次数chaonum来限制比较次数,当驱光个体在局部搜索中找到局部最优或者超过这个混沌次数,便可以结束查找;
[0041]
s6.3:参与混沌扰乱的驱光个体需要将自己找出的局部最优的组合方案与历史全局最优组合方案进行比较。如果更优于历史全局最优组合方案,则用该方案更新历史最优组合方案,作为新的fbest,否则继续s5。
[0042]
有益效果:本发明采用以上技术方案与现有技术相比,具有以下技术效果:
[0043]
1、微服务组合优化问题是复杂的np-hard问题,时间复杂度为多项式时间的问题,随着问题规模的扩大,会导致组合爆炸,完全遍历所有的组合方案是不现实的。本发明利用微服务的特点对微服务进行分类,将具有相同的输入和输出的服务分在同一个类中,从而减少组合降低,使得完全枚举所有组合方案成为可能。
[0044]
2、本发明引入具有混沌性质的余切序列方法,在组合初始化阶段,使用余切序列初始化驱光个体的位置,利用余切序列的遍历性、规律性、伪随机性的特点,弥补了原有算法的随机搜索策略,使得算法整体搜索效率提高;在混沌扰乱阶段,使用一套全新的扰乱规则,对部分驱光个体进行充分的扰乱,使得算法不容易陷入局部最优,具有全局搜索能力。
[0045]
3、本发明改进了算法的步长因子和吸引度公式,使得随机项能够发挥其有效的探
测能力,平衡了局域搜索和全局搜索,还防止了种群个体间由于距离过大而导致吸引力为0 的情况,提高了寻优能力。
[0046]
4、基于边缘计算环境,针对边缘云中部署微服务以及应用服务组合算法,在边缘端就近为用户提供服务,减少传输的时延,改善用户体验;引入哈希树的概念,对服务的 qos属性值进行层层哈希,保存在各个边缘服务器中,保障提供的微服务的可靠性。
附图说明
[0047]
图1是微服务组合方案寻优模拟图;
[0048]
图2是陷入局部最优示意图;
[0049]
图3是扰乱服务组合方案示意图;
[0050]
图4是微服务组合逻辑结构图;
[0051]
图5是服务链和候选服务;
[0052]
图6是边缘云系统架构图;
[0053]
图7是哈希树的原理图;
[0054]
图8是本发明一种面向边缘云系统的软件微服务组合优化方法的流程图。
具体实施方式
[0055]
下面详细描述本发明的实施方式,所述实施方式的示例在附图中示出。下面通过参考附图描述的实施方式是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。
[0056]
本发明是一种面向边缘云系统的软件微服务组合优化方法,实现在边缘环境下满足用户服务需求的前提下,保证为用户提供的微服务组合的qos服务质量达到最优,并且进一步提高了微服务组合的效率,以及提高了微服务组合的多样性。传统云计算环境下,多采用智能优化算法求解微服务组合优化问题,例如粒子群优化算法、遗传算法、模拟退火算法等。本发明针对微服务组合优化问题,也采用对一种智能优化算法进行改进以适合微服务组合优化问题的解决。该智能优化算法,是一个基于群体的随机搜索算法,群体中的每个个体是对应问题的一个候选解,通过群体智慧搜索出最优的位置,因其概念简单、易于实现,并且具有较好优化性能等优点,被广泛使用到各种优化问题的求解。本发明针对微服务组合优化问题,对该智能优化算法进行改进,通过在种群的初始化和更新中引入混沌理论,以及对算法本身进行优化,针对边缘环境提出了一种面向边缘云系统的软件微服务组合优化方法。
[0057]
在本发明中,每种微服务组合都表示成一个驱光个体,在种群初始化时,需要对每个驱光个体进行位置的初始化,从而决定了每个个体距离最优解的距离。如图1所示,存在最优解,也就是最优的组合方案,而x2,

,x
i
,

,x
n-1
等则表示其它的组合方案。这里用x
j
(j=0,1,2,...,n-1)代表某种微服务组合方案,x0,x1,

,x
i
,

,x
n-1
中,每一个向量均表示一种微服务组合方案,将所有微服务组合方案进行比较,选出全局最优的微服务组合方案。
[0058]
假设微服务组合方案x
i
距离最优微服务组合方案最近,所以设x
i
为当前全局最优微服务组合方案,并且设该全局最优微服务组合方案为x
g
。每个微服务组合方案在寻优过程中,会向比自己更优的组合方案靠近。而当前最优的组合方案为了靠近真正的全局最优组合方案,会进行随机变化,在周围寻找是否存在比自己更优的组合方案。为了避免随机扰
动会导致最优解的错过,这里引入粒子群算法(pso)历史全局最优解的方法,保存累计迭代的最优解。每个微组合方案会被更优的解吸引,逐步靠近更优解,更新自己的位置,更新公式如式(1)所示:
[0059][0060]
其中,第一项x
i
(t)表示驱光个体i在第t次迭代的位置,第二项中x
j
(t)表示驱光个体j在第t次迭代的位置,第三项表示随机项,一般ε
i
取随机数,α∈[0.1]。
[0061]
上述寻优模型考虑的是只有一个全局最优微服务组合方案的情况,通常情况下的优化问题均为多峰值的优化问题,即有多个极值和多个最优值。所以传统的组合优化算法在求解多峰值的优化问题时,由于收敛速度快,在计算过程中容易陷入局部最优,导致群体早熟。陷入局部最优情况如图2所示,图中有一个最优微服务组合方案,两个局部最优微服务组合方案。当前微服务组合方案距离局部最优微服务组合方案a最近,然后所有的微服务组合方案均向靠近,陷入了局部最优微服务组合方案。即更新前微服务组合方案的状态,所有微服务组合方案向局部最优微服务组合方案a靠近。
[0062]
本发明采用余切扰乱,对微服务组合方案的更新做了改进,即余切扰乱使得微服务组合方案在寻优过程中充分扰乱微服务组合方案的位置和动向,从而极大的降低了陷入局部最优值的概率;如图3所示,是微服务组合方案更新后的状态,更新后充分扰乱了微服务组合方案的位置和动向,破坏了微服务组合方案陷入局部最优。对于为多峰值的优化问题,本发明可以搜索到尽可能多的全局最优微服务组合方案,保证了组合方案的多样性,同时利用hash树的概念,对保存在服务注册中心的服务属性值进行哈希,得到的hash树根值可以确定数据是否合法。
[0063]
为了方便理解本发明的技术方案,下面定义一些概念:
[0064]
定义1驱光个体每种微服务组合都表示成一个驱光个体,驱光个体的位置变换对应着微服务组合方案的变化。
[0065]
定义2混沌即根据一定的规则将变量由原本的混沌空间变换到求解空间,利用混沌本身的规律性、随机性和遍历性等特点进行混沌搜索,跳出局部最优,从而求出全局最优解。
[0066]
定义3混沌搜索方法是由确定方程得到具有伪随机性、遍历性和规律性等特点的随机运动状态点。
[0067]
本发明中采用的是具有混沌性质的余切公式作为混沌搜索方法,其公式如式(2)所示:
[0068]
a
n+1
=cot(a
n
)
ꢀꢀꢀ
(2)
[0069]
式(2)中的a
n
是余切序列的一次取值,当给余切序列一个初值时,需要满足a0∈(0,π),将初值通过余切序列公式迭代,可以产生一个伪随机序列。“余切公式”是蝴蝶效应的一个典型例子。例如,取三个余切初值分别为1、1.0001、1.00001,使用余切公式分别将初值迭代,三个数列每一项都是前一项的余切,当计算到第10项后,三个数列开始形成巨大的分歧。这就是混沌的数列,经过足够多项后,得到的数字是随机的、混沌的、遍历的。
[0070]
定义4服务类(s
j
)s
j
是具有相同服务功能的集合,具有相同的输入集合和输出结合的服务归类为同一个服务类,表示为s={s0,s1,

,s
m-1
},其中s
j
表示第j类服务。
[0071]
定义5候选服务是构成服务组合的基本逻辑单元,第j个服务类的候选服务为其服务类s
j
对应的输入集合为输出集合为
[0072]
每一个候选服务包含一个qos向量该向量包含4个参数:
[0073]

执行成本(execution cost,c):服务的执行费用c是指作为服务使用者请求执行该服务要付出的费用。
[0074]

服务执行时间(response time,t):服务的执行时间t等于请求发送的时间点到结果被收到的时间点之间这段时间。
[0075]

可用性(availability,a):服务的可用性是服务可使用的概率,其计算公式为:
[0076]
a=t
λ

ꢀꢀꢀ
(3)
[0077]
式中λ是根据服务的类型设置的常量,t
λ
是服务在时间λ内可用的时间。
[0078]

可靠性(reliability,r):服务的可靠性r是一个请求在最大期望时间内被正确响应的概率,其表达式为:
[0079]
r=n
s
/n
t
ꢀꢀꢀ
(4)
[0080]
式中n
s
表示服务在观察时间内被成功调用的次数,n
t
表示在观察时间内调用服务的总次数。
[0081]
定义6服务链(l
c
)从候选服务中选择出合适的服务,并根据其输入输出逻辑,按照逻辑顺序组合成顺序有向图,即为服务链,如图4所示。
[0082]
本发明面向的微服务组合的优化模型如下:
[0083]
(1)假设服务共有m个服务类,即s={s0,s1,

,s
m-1
};
[0084]
(2)每个服务类中有若干个候选服务组成,即其中k
j
表示第j个服务类中共有k
j
个候选服务;
[0085]
(3)每个服务均有描述其质量的属性参数;
[0086]
(4)假设有服务链l
c
=s0→
s1→
...

s
j

...

s
m-1
(s
j
属于服务类s
j
);
[0087]
(5)服务组合尽可能的提高服务质量。
[0088][0089]
s.t getoutput(s
j
)==getinput(s
j+1
)s
j
∈l
c
[0090]
α+β+γ+η=1
[0091][0092]
其中s
j
表示服务链上的某一服务,getinput()和getoutput()函数是获取对应服务的输入集合和输出集合。α、β、γ和η,分别表示各个qos属性权重,r、t、c和a分别表示服务链的各个qos属性的积或和,其中r和a分别为可靠性和可用性,多个服务组合起来的总的可靠性为各个服务的可靠性的乘积,同理可得可用性;而t和c分别表示执行时间和执行成本,多个服务的执行总时间为多个服务的时间之和,同理可得执行总成本。但因为不同的qos属
性单位不同、数量级不同,难以直接对全部的qos属性进行对比,而且时间和成本属性值越大,qos的评价就越低,相反,可用性、可靠性与qos值成正比,因此需要对qos属性统一量纲,以及做归一化处理。
[0093][0094][0095]
其中,q
d,k
表示第d个候选服务,代表该候选服务集中m
d
个候选服务的第k 个质量属性之和。按照上段提到的,与qos值成正比的属性,按照公式(6)计算,而成反比的则按照公式(7)计算。
[0096]
根据以上定义,本发明分为三个步骤:首先,全局搜索一条可行的服务链,并找到服务链上的各个服务的候选服务;其次,通过余切序列混沌初始化驱光个体;最后,计算各个驱光个体的适应度函数值,评价各个驱光个体的优劣,选择最优的驱光个体作为被学习的对象,以及更新其它驱光个体。
[0097]
首先,采用捕食搜索策略在全局求得一条可行的服务链,所有的微服务数据存放在xml文件中,如
[0098][0099]
其中,servname表示服务的名字;time、avail、rel、cost分别响应时间、可用性、可靠性和执行成本。input表示服务的输入集合;output表示输出集合。为了更符合边缘环境,将微服务与边缘服务器绑定,即代表该微服务部署在边缘服务器中。
[0100]
在搜索服务链的过程中,为了保证服务链中没无效的服务(即对最终输出结果没有影响的服务),增加了一个搜索集合,用变量searchset表示。在一次搜索过程中将服务链上微服务的输入集合存放于该变量中,在微服务加入到服务链上之前,需要判断 searchset中是否已有该微服务输入集合,若不存在,且满足要求,则该微服务可加入服务链中,否则,不可以;当该次搜索结束后,没有搜索到可行服务链,则将搜索集合清空,在没有被搜索过的微服务中搜索,直到找到一条可行的服务链,或者经过最大搜索次数,停止搜索。
[0101]
定义7余切初始化即通过一定的映射规则,将余切序列产生的伪随机序列值映射到种群个体的位置的初始值。
[0102]
经过捕食搜索在全局已经搜索得到一条可行的服务链,在混沌初始化前,首先对
混沌初始化中所需的参数进行说明:
[0103]
(1)根据捕食搜索策略搜索一条全局可行的服务链,假设服务链是由m个服务组成的;
[0104]
(2)根据服务链上的服务,找到服务链的候选服务,服务链上每一个服务均对应一类候选服务,令每一种类分别为s
j
={s
j,0
,s
j,1
,

}(j=0,1,

,m-1),服务链和与之对应的候选服务如图5所示;
[0105]
(3)将具有相同功能的微服务分为一类(本发明将具有相同的输入集合和输出集合归为同一类);通过分类,使组合数降低,这样完全枚举所有组合方案成为可能;
[0106]
(4)假设每一候选服务项目的个数为k
j
(j=0,1,

,m-1),所以
[0107]
(5)根据(1)和(2)两点假设得驱光个体的位置x
i
=(s0,s1,

,s
m-1
),驱光个体的维数为
[0108]
微服务组合优化问题具有不确定性,这里的不确定性主要是指评估组合方案优劣的最优适度函数值提前是不知道的,所以只能尽可能的找到更优解;以及不同服务链上的不同服务对应的候选服务数量也是不确定的,对应不同的服务链,初始化所需的余切序列会有所不同,所以本文提出一种动态的余切序列方法来初始化驱光个体。
[0109]
余切序列和logic序列都是混沌的,logic序列是通过logic映射公式,即线性函数迭代产生的序列,而余切序列是通过余切函数迭代产生序列。尽管余切函数计算消耗的时间略大于线性函数,不过余切函数产生的序列有更好的动态性和遍历性。因此,本发明采用了余切函数。
[0110]
为了符合微服务组合的应用,本发明设计一种动态的混沌序列,主要步骤如下:
[0111]
(1)假设服务链上的微服务种类为m,每种服务对应的候选服务的个数为k
j

[0112]
(2)m个0~π之间的随机double类型的数值,作为序列的初始值
[0113]
(3)代公式a
n+1
=cot(a
n
)依次计算出后面的余切序列值;
[0114]
(4)某一类服务的候选服务的数量级来决定截取余切序列小数点后几位;例如第j 类服务类有70个则取小数点后两位,使用截取的数对70求余,生成的数在0~59之间,就与该类的某一个候选服务对应。
[0115]
定义8适应度函数值即适应度函数的值,该值是量化指标,用来评价微服务组合方案的优劣程度。
[0116]
本发明服务组合包含4个qos参数,即可靠性、响应时间、执行成本和可用性。其中可靠性和可用性是一个概率,其值在0-1之间,响应时间和执行成本并不是一个概率,如上式(7)所示,需要统一进行归一化,本文采用的策略为:按照qos各属性的特点,例如响应时间与执行成本应该与适应度值成反比,按照上式(7)进行归一化,可靠性与可用性与适应度值成正比,按照上式(6)进行归一化,适应度函数为:
[0117][0118]
其中,f代表适应度值,r表示服务链上各微服务可靠性的积,t表示服务链上各微
服务响应时间的和,c表示服务链上各微服务执行成本的和,a表示服务链上各微服务可用性的积。α分别表示r的权重,β表示a的权重,γ表示t的权重,η表示c的权重,且α+β+γ+η=1。
[0119]
本发明是基于微服务场景,若将本发明的方法应用于其他有序组合优化场景中,将适应度函数修改为具体场景的评价驱光个体优劣的指标即可。
[0120]
定义9混沌扰乱即微服务组合方案在更新过程中引入余切扰乱方法,充分扰乱微服务组合方案,尽可能遍历搜索空间。
[0121]
当某一驱光个体陷入局部最优时,应该尽有可能地让该驱光个体跳出局部最优。通过采用混沌扰动,即对驱光个体的位置按照混沌序列进行重新初始化。重新初始化之后,需要在局部进行搜索,找出局部的最优值。如果局部搜索到的最优值优于历史全局最优组合方案,则进行替换,本次的混动扰动结束,否则需要重复进行混沌扰动,直到找到新的全局最优解或者达到设置的混沌扰动迭代次数。
[0122]
定义10光亮度即每个驱光个体所在位置(组合方案)对应的适应度值。
[0123]
这里将光亮度定义为驱光个体的适应度值,光亮小的驱光个体会趋向于光亮大的驱光个体进行移动。公式如下:
[0124][0125]
公式中i
i
代表驱光个体i的绝对光亮度,这直接由适应度值决定。γ为光吸收系数,一般设置为常数,光吸收系数的作用是空气等物质的存在会导致光的减弱,引入组合优化中,就是距离较远的更优方案会随着距离的加大减弱吸引度,这在吸引度的定义中也有体现;r
ij
为驱光个体i到驱光个体j之间的欧式距离。则驱光个体i和j之间的距离可以表示为:
[0126][0127]
公式(10)中x
i
和x
j
分别是驱光个体i和驱光个体j所处的空间位置,x
i,d
代表驱光个体i的d维分量,d代表维度。
[0128]
定义11吸引度即驱光个体之间的吸引度,取决于距离的影响。
[0129]
该算法中的驱光个体之间的吸引度如下:
[0130][0131]
其中β0代表最大吸引度,即在距离为0(r=0处)驱光个体的吸引度。其中最小吸引度β
min
是为了确保个体间的吸引度不为0。经分析,若置β
min
=0时,当个体间距离趋近于无穷时,吸引度β趋近于0。显然这样会导致个体间由于距离过大发生种群个体随机游走,从而失去对其它个体的牵引,失去寻优能力。
[0132]
加入β
min
之后,取β
min
=0.25,这样可以防止驱光个体间缺乏吸引度的牵引。即使出现距离过大的情况,趋近于0,但由于β
min
的存在,吸引度不为0,而且β
min
的引入可以解决高位组合优化问题中种群个体间距离较大时缺乏吸引度的问题,适合解决微组合问题。
[0133]
定义12步长因子即在位置变化中影响位置变化的因子,一般用α表示步长因子,且
α∈[0.1]。
[0134]
在理想情况中,该算法在收敛过程中种群个体会逐渐聚集,最终收敛到一点,对于个体x
i
,可以得到:
[0135]
lim
t


x
i
(t+1)=lim
t


x
i
(t)
ꢀꢀꢀ
(12)
[0136]
按照位置公式(1)可以得出,
[0137]
lim
t


α=0
ꢀꢀꢀ
(13)
[0138]
从式(13)可以看出,当算法收敛时,步长因子α趋近于0。
[0139]
一般的位置变换公式中作为随机项,步长因子α取固定值0.5,而αε
i
中ε
i
取随机数,显然随机项很大程度取决于ε
i
,那么该项就变成了完全随机项,显然在算法运行中难以发挥其调节算法的探测能力和搜索能力。为了在很大程度上发挥步长因子在算法中的作用,本发明对α进行设置,即在算法初期,随机项需要拥有较大的随机步长,发挥有效的探测能力,在迭代后期,再减小步长,以发挥其在局部的有效搜索能力,公式如下:
[0140]
α(t+1)=α(t)
·
exp(-0.5
·
t/t
max
)
ꢀꢀꢀ
(14)
[0141]
上式中t
max
表示最大迭代次数,t为当前迭代次数。随着迭代次数的增加,α逐渐减小。设定α的初始值α0一般取0.5。
[0142]
定义13边缘云即边缘计算中由多个边缘服务器构成的集群。
[0143]
传统的微服务都是部署在云计算环境中,因此微服务组合大多也是针对云计算环境。边缘计算中将任务下沉到网络边缘端,就近为用户提供服务,其中各大云厂商在满足用户就近使用的需求下,逐步也将一些微服务就近在边缘端提供给用户。为了提高用户的服务体验,相关的组合优化算法也需要根据边缘计算的特点进行改进,以适应边缘云中的服务组合。
[0144]
在边缘云的环境下,各个边缘服务器部署在靠近终端的位置。如图7所示,在整个边缘云中,有一台服务器充当边缘编排管理器,用来统一管理边缘云中各微服务的注册和管理。当用户的设备通过基站连接到边缘云之后,将任务上传到边缘编排管理器中,由编排器为用户在微服务注册中心中筛选适合的微服务组合方案,完成用户的任务,并返回结果给终端用户。
[0145]
定义14哈希树哈希树结构类似于二叉树,其叶子节点上的值通常为数据块的哈希值,而非叶子节点上的值。
[0146]
在构造hash树时,首先要对数据计算哈希值,通常,选用sha-256等哈希算法。但如果仅仅防止数据不是蓄意的损坏或篡改,可以改用一些安全性低但效率高的校验和算法,如crc。然后将数据计算的哈希值两两配对(如果是奇数个数,最后一个自己与自己配对),计算上一层哈希,再重复这个步骤,一直到计算出根哈希值。如果任何底层数据块发生变化,最终都会传导到根哈希。如果根哈希不一致,可以通过hash树快速定位到导致不一致的数据。哈希树还可以用来对数据进行快速比对,快速定位到不一致的数据,如图8所示。
[0147]
在本发明中,边缘编排管理器会将服务注册中心中注册的微服务的qos属性值保存在服务注册中心中,利用hash树的概念对微服务的qos属性值进行两两hash,最后得到一个hash根。边缘编排管理器将这个hash值用私钥加密,然后广播给各个边缘服务器,边缘服务器会用保存的公钥保存这个hash值。边缘服务器会定时询问注册中心,看是否注册中心中保存的哈希根与本地存储哈希值是否一致。如果不一致,则判断服务注册中心保存的服
务qos属性值遭到篡改,利用哈希树的性质可以很快定位到哪个服务的属性值遭到了修改,这样就可以保证微服务qos属性值的可靠性。
[0148]
本发明以微服务组合为例,其服务质量确定问题中的质量包括服务执行的时间、执行成本、可靠性和可用性。本发明的微服务组合方案生产流程图如图8所示。其具体操作步骤如下:
[0149]
s1:用户提交自己的任务,任务中包括相对应的任务输入以及预想的输出结果。该任务提交到边缘云中,由边缘编排管理器接收,并通过注册中心得到部署在各个边缘服务器中微服务的信息,进行组合服务的选择。
[0150]
s2:首先引入捕食搜索策略,采用捕食搜索策略在全局求得一个可行的服务链,即搜索一条满足用户微服务组合要求的服务链。其具体描述如下:
[0151]

在一次搜索过程中将服务链上微服务的输入集合存放于searchset集合变量中;
[0152]

在微服务加入到服务链上之前,需要判断searchset集合中是否已有该微服务输入集合,若不存在,且满足要求,则该微服务可加入服务链中,否则,不可以;
[0153]

当该次搜索结束后,没有搜索到可行服务链,则将搜索集合清空,在没有被搜索过的微服务中搜索,直到找到一条可行的服务链,或者经过最大搜索次数,停止搜索。
[0154]
s3:假设该服务链的长度为m,搜索s2中的可行服务链上的每个服务对应的候选服务,聚类各抽象任务的候选集,即将具有相同的输入集合和输出集合的微服务归为一类,放入同一个服务类中,从而使组合数降低,提高搜索效率,根据服务链长度可得m个候选服务类,即s={s0,s1,

,s
m-1
}。
[0155]
s4:然后在组合算法初始化中,引入混沌搜索方法替代随机初始化,在候选服务中使用混沌序列依次从各个候选服务中取一个候选服务,形成一个可行的服务链,每个服务链对应一个驱光个体,多次执行初始化操作生成多个驱光个体;服务链上的每个服务有k
j
个候选服务,这里假设是给第i个驱光个体进行初始化。其具体步骤如下:
[0156]

首先确定k
j
的数量级根据与服务对应的余切序列值截取小数点后φ
j
位作为整数值u
0,j
,其范围为(不包括);
[0157]

然后将u
0,j
对k
j
取余,产生0~k
j
(不包括k
j
)之间的混沌值,这里将该混沌值设为ξ
0,j
,该值与该服务对应的候选服务中的某一个服务对应,则所对应的候选服务被选中。同样,服务链上的所有服务均执行该操作后,则第i个驱光个体的位置x
i
初始化完成。
[0158]
假设共有n个驱光个体,当第一个驱光个体初始化结束之后,第二个驱光个体需要根据第一个驱光个体初始化,也就是利用余切函数,将第一个驱光个体的余切结果作为变量计算自己的余切值,剩下的驱光个体依次进行。则需要上述过程共n-1次,可以得到一个n
×
m的余切序列矩阵c,如式(15)所示,通过余切序列矩阵通过截取并取余数操作得到与驱光个体一一对应的矩阵。其具体步骤如下:
[0159]

迭代n次,即生成一个n
×
m的余切序列矩阵,如式(15)所示。从第二个驱光个体开始,是根据前一个驱光个体的余切值得到,如式(16)所示:
[0160][0161][0162]

将余切序列矩阵根据对应候选服务数量的数量级φ
j
确定截取小数点后几位数,并将截取后的值对k
j
取余,得到混沌矩阵φ,如式(17)所示。
[0163][0164]
初始化中,各个参数的初始值如式(18)所示。
[0165][0166]
s5:根据具有个性化的适应度函数来评价这n个微服务组合方案,找到这n个微服务组合方案中的最优的微服务组合方案,并判断对应的适应度函数值是否达到理论最优。如果是,则该微服务组合方案即为全局最优微服务组合方案;否则,执行s6。当找到最终的最优微服务组合方案或者迭代次数达到上限,则停止,输出停止时的最优的微服务组合方案,即为全局最优微服务组合方案。其具体描述如下:
[0167]

初始化n个驱光个体时,创建了一个驱光个体列表fireflies,用来存放驱光个体。通过遍历n个微服务组合方案,分别计算出各个微服务组合方案的应度函数值,并修改驱光个体的光亮度属性值。
[0168]

每个驱光个体需要与其它驱光个体进行光亮度对比,如果存在驱光个体比这个驱光个体光亮度高,则按照式(11)计算两者之间吸引度。直到比较结束之后,按照最大吸引度原则,向比自己光亮度高,同时吸引力最大的驱光个体移动。
[0169]

遍历驱光个体列表,将适应度值最大值赋值给全局最优适度值fbest。
[0170]

判断fbest是否达到理论最优值ftheory(该值表示在相应的目标成本下,微服务组合的服务质量可达到的理论最优适度值),如果达到理论最优,则 x
index
=(s
0(index)
,s
1(index)
,

,s
m-1(index)
)为最佳微服务组合方案。否则,count++(count值表示已经迭代的次数,初值为0),并且判断count是否达到最大迭代次数maxiteration,如果是,输出x
index
,结束搜索;否则执行s6。
[0171]
s6:用混沌扰乱规则更新20%的驱光个体的微服务组合方案,这20%的驱光个体是选择10%的当前迭代中适应度值最优的驱光个体以及10%的适应度值最差的驱光个体,其余的驱光个体依然按照原本组合算法的位置变换的公式进行计算。20%的驱光个体需要进行更新,之后在局部搜索,更新完成后,返回执行s5。其具体步骤如下:
[0172]

筛选的20%的驱光个体需要按照混沌序列更新自己的位置,公式如下:
[0173][0174]
式(19)中表示驱光个体i在t次迭代的第j维的位置,也就是服务链第j个分量的选择方案。位置更新也需要按照余切序列来计算,在第t+1次迭代时,第i个驱光个体的第j维位置更新是按照第t次得出的余切序列来进行迭代得出,其中h表示该驱光个体的维度,也就是服务链的长度,n表示最大迭代次数。更新之后的余切函数值需要根据s4进行计算对应的候选服务。
[0175]

20%的驱光个体进行局部搜索,找出自己的局部微服务组合最优方案,这里设置了一个混沌次数chaonum来限制比较次数,当驱光个体在局部搜索中找到局部最优或者超过这个混沌次数,便可以结束查找。
[0176]

参与混沌扰乱的驱光个体需要将自己找出的局部最优的组合方案与历史全局最优组合方案进行比较。如果更优于历史全局最优组合方案,则用该方案更新历史最优组合方案,作为新的fbest,否则继续s5。
[0177]
s7:通过组合算法的求得基于当前服务链的全局最优解,或者达到最大迭代次数,对应的服务链为当前最优服务链。微服务组合选择成功之后,对用户的任务进行执行,之后边缘编排管理器会将执行之后的结果返回给用户,并对相应的微服务中qos各属性值进行更新,并将更新的结果保存在服务注册中心。
[0178]
s8:边缘编排管理器会将服务注册中心中注册的微服务的qos属性值保存在服务注册中心中,利用hash树的概念对微服务的qos属性值进行两两hash,最后得到一个hash 根。边缘编排管理器将这个hash值用私钥加密,然后广播给各个边缘服务器,边缘服务器会用保存的公钥保存这个hash值。边缘服务器会定时询问注册中心,看是否注册中心中保存的哈希根与本地存储哈希值是否一致。如果不一致,则判断服务注册中心保存服务qos属性值遭到篡改,利用hash树的性质可以很快定位到哪个服务的属性值遭到了修改,就可以定位到具体的边缘服务器。
[0179]
以上实施例仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明保护范围之内。
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1