基于QoS的组合web服务选择

    随着Web Services应用的快速发展(谁叫人家是基于SOA service-Oriental architecture结构的呢),越来越多的服务也慢慢采用web Services的开发结构(叫什么SOD service-Oriental Design).因此会出现一些数目众多的web服务,这些服务之间难免会有一些实现的功能(functional)和QoS要求是相近或相同的,而作为用户来说如何从这些功能相近的服务中选择最优是每个客户所关心的。

    为了选择好的服务,我们需要引入criteria作为benchmark。QoS被我们引入去评价一个系统的优劣。what is QoS?显然QoS表征一个服务的质量。QoS分为common QoS和domain-relevant QoS。common QoS是评价每个服务的通用标准,包括服务响应时间,声望,成本,可用性,成功执行率,吞吐率等;而domain-relevant service是与领域相关的一些参数,如领域服务内容,领域服务的上下文环境等。

    QoS参数的处理:在获取QoS参数之后,接下来就可以对QoS这些数据进行处理。首先是数据的标准化和同趋化处理。标准化用于解决个属性的量纲和数量级不同,不能直接相互比较和计算。同趋化是为了解决不同的属性对对评价函数的正负影响问题。用qi表示属性q的一个value。当评价的效用函数随着q的增加而增加时,称q是正相关属性,反之成为负相关属性。

         q1=(q-qmin)/(qmax-qmin) qmax不等于min  else q1 (属性正相关)

         q2=(qmax-q)/(qmax-qmin) qmax不等于min  else q2 (属性负相关)

    然后为每个属性赋上不同的权值(权值之和等于1),加权求和得对系统的评价函数。对每个web Services都运用后可得到每个服务的打分。进而生成一个candidate services列表,用户可以根据需要选择(根据功能和属性要求以及结合该评价标准)。



    QoS的属性在评价一个系统的性能时具有很大的作用。然而获取到的QoS属性值不一定是真实的。一方面服务提供者方面存在着竞争关系,为了吸引大量客户,服务提供者具有虚夸QoS的动机;另一方面,由于Internet的开放性和动态性,以及服务自身的不确定性等因素,QoS的属性往往处在动态变化之中。

    属性值的可信性问题(基于概率统计的假设检验方法)。

    我们提出了一种能够保证服务选择中QoS各属性值可信性的方法,将QoS各属性视为未知参数,将服务提供者的历史运行数据以及用户的反馈视为对总体未知参数的样本观测值。针对不同的QoS属性的总体分布不同,分别给出了基于样本观测值的估计函数,以及反映样本估计精确度和可靠性的置信区间的计算公式,进一步地,利用置信区间去检验性值在给定样本观测值和一定的置信水平后是否具有一致性,并在不一致的情况下进行修正。在很大程度上可以保证QoS属性值的真实性。

    属性值的获取途径。

    有多种方法可以获取属性值,(比如设计一个设计一个web services的QoS体系结构便于收集信息,design the service selection algorithms to meet end-to-end QoS constraints.)比如在基于UDDI的模型中,采用了在provider,customer与UDDI之间增加了一个QoS broker获取属性值(如请求服务的内容,服务的请求时间和响应时间等)。结合这些信息,我们可以对发现的服务进行处理得到一个候选服务列表供客户选择(rank the services and select the high quality services for service consumers.)。



    用户对于web Services的需求不仅仅局限于单个的web服务,而是可能需要若干个web Services组合实现来满足用户的功能性要求。基于QoS的Web服务选择问题是指如何从服务组合各抽象服务的候选服务集中分别选出一个具体服务,使得选中的这组服务能在满足用户对组合服务的所有约束的前提下,使组合服务的整体QoS最高。

   选择策略:

   1.局部最优选择策略:局部最优策略的基本思想是:分别考查各个抽象服务的候选服务集,对候选服务的各个QoS参数信息进行加权和排序,并以此为依据分别从每组功能等价的候选服务中为服务组合中的每一个抽象服务选择一个满足局部约束条件限制且加权和最大的服务来构建组合服务。其核心是针对组合服务中的每个抽象服务,对能够完成该服务的所有候选Web服务进行选取,找到能够实现单个抽象服务的质量最优的服务。

  2.全局最优选择策略:全局最优策略的选取方法将着眼点从单个抽象服务转移到了整个组合服务,从而使得选取出的服务更接近用户对组合服务质量的要求它旨在使得组合服务整体的QoS满足给定的约束或达到预定的优化目标,因此具体服务的选择需要综合考虑各个具体服务的聚合效果。

  3.混合策略:如先采用局部最优策略对每个抽象服务过滤其候选服务,再由全局最优策略从未筛选掉的候选服
务集中进行服务选择。通常利用局部最优策略来缩小服务聚合的求解空间,利用全局最优策略来把握整体QoS,它所产生的解是满足局部约束和全局约束的全局QoS最优的解。

  选择算法(启发式算法)

   1.穷举算法;将所有的组合方案全部列举出来,比较它们QoS的非功能属性,然后选择组合服务。简单,直观,全面,准确;计算量大,可扩展性差。

   2.贪婪算法:逐步给出解的各个部分,每个抽象服务贪婪地选择其所对应的候选服务集中QoS最好的web服务。以局部最优达到最终的全局最优。

   下面是几种启发式算法:

   3.GA(genetic algorithm)算法:GA将问题的求解过程表示为染色体优胜劣汰的过程,通过种群的迭代进化,包括选择,交叉,变异等操作对种群进行组合产生下一代个体,逐步向优化的种群进化,最终求得适合环境的染色体,也就是问题的最优解或近似最优解。染色体表示一个组合服务,染色体上的基因表示组合服务上的一个抽象服务,基因的值表示一个抽象服务中的某一个候选服务。交叉表示两个染色体上的基因相互交互,变异表示某个基因值随即地变成另一值(也就是候选服务的改变)。适应度函数根据各个具体的QoS值进行计算。早期收敛,稳定性和收敛性差。简单,易于实现,通用性强,具有全局搜索能力和并行能力。

   4.POS(Particle Swarm Optimization)算法:粒子群优化算法是模仿鸟类的觅食行为受到生物群体模型启发而设计得到的一种新的智能优化算法,采用群体探索问题的解空间,首先初始化一群随机粒子,通过迭代方式使粒子向自身的最佳位置和粒子群的最佳粒子靠近,从而搜寻最优解。每个粒子代表一个候选解,即一种组合方案,由若干个(假设有n个)具体服务以一定顺序组成。用n维来表示每个粒子的位置Xi={xi1,xi2,…,xin}。其中xij表示第i个抽象服务选择了它所对应的候选服务集中第j个具体服务的编号。每个粒子代表的组合服务的QoS属性值就是该粒子的适应度,其适应值函数依组合服务的具体实例而定。速度和位置的更新公式取决于服务选择所采用的编码方式,即粒子位置的表示方式。

   5.ACO(Ant Colony Optimization)算法:ACO是一种新兴的模拟进化算法,它通过模拟蚁群在觅食过程中个体之间的信息交流与相互协作机制所体现出的寻优能力来解决现实中一些困难的优化问题。ACO通过一种正反馈方式最终找到一条最优路径:蚂蚁在觅食期间会在所经过的路径上留下不同浓度的信息素,信息素会随着时间的流逝而
挥发。某一条路径走过的蚂蚁越多,留下的信息素浓度越高,使得在一定的时间内,越短的路径会被越多的蚂蚁访问,后来的蚂蚁就会以较大的几率选择信息素较浓的路径以指导自己的运动方向。
    采用ACO解决基于QoS的Web服务选择问题,关键是要解决如何根据组合服务中各QoS参数来确定状态转移规则、信息素的更新方式和解的适应函数评估等问题。每只蚂蚁负责构建服务组合的一条路径,即代表了一种组合方案,并可能向它所选择的具体服务释放一定量的信息素。每只蚂蚁从服务组合中第一个抽象服务所对应的候选服务集中选择一个具体服务开始,每经过一次迭代,蚂蚁就向解中按抽象服务执行的先后顺序添加一个新的还没有被分配过的抽象服务所对应的候选服务集中的具体服务,且须利用信息素、启发式信息等来选择新的具体服务添加到解中。当服务组合中所有抽象服务都被蚂蚁分配了具体服务之后,一个候选的组合方案就构建了。

猜你喜欢

转载自blog.csdn.net/u014067137/article/details/80252595
QOS