徐辉, 曹健
软件从传统的面向对象(Object-Oriented Programming,OOP)的开发方式,逐渐转变到了面向服务体系结构(Service-Oriented Architecture, SOA)的开发方式。Web Service具有松散耦合以及平台无关等优良特性,在Internet环境下不同的应用,可以方便地进行互操作和集成,所以越来越多的服务提供商,把应用程序作为服务发布在网上。
UDDI(Universal Description Discovery & Intergration)规范为用户提供了一个统一的发布和查找 WebService服务的集成平台[1],但它只提供了功能性需求,企业在查找服务时,除了对功能需求之外对非功能需求(即服务质量)也有较高要求,为了使企业能够从众多的 WebService服务中,选择一个高质量的服务,我们对 UDDI进行扩展和改进,加入WEB服务质量管理模型,形成了QoSUDDI注册中心。
传统的Web Service模型,是基于服务注册中心、服务提供商和服务请求者3种角色的[1]。客户在面对大量同质的WebService服务时,存在一个选择的问题,该模型显然不能满足这种筛选的需求。所以,在此基础上又产生了支持QoS的Web Service模型[2-3],其中有服务发布、服务发现、服务排序、服务调用、服务反馈等。但上述模型没有把不同的服务归类,为了更好地进行管理和提高查找服务的效率,我们在QoSUDDI中定义了不同的领域,各种服务按应用归属于各个领域,每个领域有相应的树型指标体系,服务提供者通过定义指标值来描述服务。
由于评价信息的复杂性,领域内的指标值存在着模糊性,所以模型必须支持模糊评价,有的服务质量模型把指标分成了静态、动态和统计三种类型[6],这种分类太过抽象,不易实现;有的服务质量模型定义的指标太具体化,缺乏通用性[3] [11]。我们的QoSUDDI模型力求提供一个通用性的平台,模糊类型的划分既全面又容易实现。
为了帮助服务请求者更好地从满足需求的众多服务中,挑选最适合自己的服务,服务排序是必不可少的。因为指标具有模糊性,所以排序中存在指标归一化的问题,有的采用相似度来进行排序[11],只是考虑了与近似值的相近程度,没有考虑效益型和成本型的不同;有的先把不同类型的指标归一化为精确值,加权求和后再进行排序[4],没有考虑到指标间因模糊性而带来的差别。在QoSUDDI的服务排序中,先把原子指标的不同模糊值归一化为三角模糊数,再把三角模糊数加权求和,然后将得到的三角模糊数综合评价值,进行去模糊化处理,根据各个非模糊化值对服务进行排序,供服务请求者进行选择。
为了保持指标评价值的客观性和公正性,在模型中存在用户反馈。有的采用中值量化来进行去噪声处理[15],没有考虑到指标值的模糊型;有的提出了一个反馈相似度的概念,由反馈相似度来决定其在反馈值中所占的比重[14],但对不同的模糊类型没有给出不同的处理方案。在QoSUDDI的服务反馈中,借鉴了反馈相似度的做法,根据指标的不同模糊类型作不同处理,把反馈值和原有值综合求得校正值,并把校正值按模糊类型还原为相应的模糊表示。
在文中我们先提出一个改进的系统模型(QoSUDDI),然后从领域专家、服务提供者和服务请求者3种角色的工作中介绍系统实现。
我们在综合了文献[2-5]的基础上,提出了一个面向服务的改进模型(图 1)。领域专家可建立、修改和删除领域,也可对领域内的指标进行管理;服务提供者可发布服务和管理服务;服务请求者可根据指标值进行服务查找,并按自己的要求对查找到的各个服务进行排序,以便选择最适合自己的高质量服务,在调用好服务后对该服务进行反馈。
随着UDDI的普及,服务提供商和服务请求者,都已经习惯了用它来进行 WEB服务的发布和查找,所以我们的QoSUDDI需要兼容原有的 UDDI,是在它的基础上进行改造和扩展的,这样做更容易得到普及和应用[10]。
图1 系统模型
具体做法是:在分析器中先解读用户请求,如果是属于UDDI操作信息的,转发给原有UDDI进行处理,如果是属于扩展的操作,则转发给QoSUDDI扩展部分的API进行处理。当然在QoSUDDI扩展部分中,某一个操作也有可能前半部分属于UDDI操作,后半部分属于QoSUDDI扩展部分的操作,所以QoSUDDI扩展部分也会向原有UDDI中心发送UDDI请求,并得到相应的SOAP返回消息。如图2所示。
图2 QoSUDDI对UDDI的兼容
领域专家的一个工作是对领域进行管理,包括建立领域、对所属领域进行修改和删除;另一个工作是定义所属领域内的各个指标,包括建立、修改和删除指标。我们着重介绍领域内指标体系的建立。
领域中的指标是树型结构,我们只对处于叶子结点上的原子指标进行评价。在参考文献[13]的基础上,我们把指标类型定义为5种类型,分别是固定型、等级型、区间型、语言型和组件型,并对其中的组件型和语言型的处理作了改进。
2.2.1 组件型的处理
组件型的参数按取值方向分为4种不同的类型,分别是来自服务提供者、服务请求者、外部接口和外部统计。
比如网上订房系统中的指标internetPrice(上网费用),总费用S的计算公式如下:
其中t1和t是时间,x是用时在t1内收取的费用,y是每分钟收取的费用。把计算出的总费用除以总时间t,得出每分钟的上网费用。调用该组件时,有t,t1,x,y四个参数,其中t1,x和y是服务提供者在定义服务时输入的,t参数是服务请求者在请求评价时输入的。
再比如网上订房系统中的指标 RentCar(租车方便程度),它的参数是来自一个权威机构对于出租车经过其周边路上的每小时流量的统计,属于其中的外部统计值,在组件内通过计算得出一个0-1之间的数值。
2.2.2 语言型的处理
在文献[13]中,采用计数的方法把语言集合进行了等分,缺乏评价时的灵活性,对此我们作了改进,允许评价时的不等分处理。例如,领域专家定义某一指标时用描述语言<差,较差,一般,较好,好>,并在0到10之间指定对应的评价值,如为<0,2,5,8,10>。当服务提供者定义服务时指定该指标值为“较好”,则它的三角模糊数为(5/10,8/10,10/10),如是效益性,为(0.5,0.8,1);如是成本型,则用(1-0.5,1-0.8,1-1)=(0.5,0.2,0),并调换位置为(0,0.2,0.5)。
服务提供者可以发布服务,在发布服务时,主要提供对服务中各个原子指标值的描述,描述格式决定于指标的不同模糊类型;同时,服务提供者也可以修改和删除所拥有的服务,删除某一服务后,该服务对应的指标值也一并删除。
服务请求者把所需服务的各项功能性描述和非功能性描述递交给QoSUDDI,QoSUDDI从数据库中取得满足条件的服务列表,按用户的要求排序后输出给服务请求者,服务请求者选择其中最适合自己的服务进行调用,调用后对该服务的某些指标进行反馈评价。
服务发现的功能在本文中不作研究,我们着重探讨如何把查找到的服务按照用户的需求,进行排序输出,所以现在假定用户在某一领域内查找时,该领域的所有服务都满足用户的功能需求。
2.4.1 服务排序
服务请求者提交服务需求后,在所选领域的树型指标中,选择排序所依据的原子指标及相应权重(如图3所示),QoSUDDI中心进行排序后,向服务请求者返回相应的服务列表。
图3 某领域的树型指标体系
服务排序的算法思想是,先把原子指标的不同模糊值表示转化成三角模糊数表示,然后对每个服务利用三角模糊数的加法和乘法进行加权求和,再把得到的三角模糊数综合评价值进行非模糊化处理,根据每个服务的非模糊化值进行从大到小排序[13]。程序流程图如图4所示:
图4 服务排序算法的流程图
2.4.2 服务反馈
如文献[14]所述,服务提供者对服务的指标值进行量化时,出于吸引更多用户的角度,可能会给出高于实际水平的值,所以我们采用服务请求者调用服务后,对服务的 QoS指标值进行反馈。
不过,我们认为,不是所有指标都适合用户反馈,应该分成三种不同的情况。
① 对于一些不存在服务提供者提供不可信的指标,比如价格等,不需要进行用户反馈。
② 对于定义成组件型的指标,如服务可用性,它的参数是外部接口值或是外部统计得到,也不存在可信问题。
③ 其它如用户满意度等主观性较强的指标,一些服务提供者为了吸引更多用户,可能会发布一些高于实际水平的值,客户应该有反馈权。
当然哪些指标允许用户反馈需要领域专家定义指标时确定,可在指标类中增加一个属性代表是否允许进行评价。
但服务请求者也可能由于自身的因素,发布一些恶意的虚拟数据,这样会直接影响反馈的准确性和可靠性,所以我们必须对 QoS反馈进行去噪声处理。我们去噪声处理的前提是,返回的 QoS反馈中健康数据占多数,且基于返回的QoS属性值往往分布在真实QoS的两侧,采用中值量化来进行去噪声处理[15]。
因为我们的指标值所具有的模糊性,我们在参考论文[14]的基础上提出了用海明距离进行去噪声处理。根据指标类型分三种不同情况进行处理。
① 固定型和等级型
假设对一个服务Si的某个指标有n个评价,第i个评价值为qi,它在服务中的原有QoS值为q,求出每个评价值相对原有值的贴近度di=|qi-q|,相应权值为fi=1-di。把n个权值累加后得到最后每个反馈的相对权值再用该权值对每个反馈值qi进行加权求和得到反馈综合值并与原有值q平均后得到校正值
对于等级型,要把校正值还原为等级描述,计算出来的校正值可能位于两个等级之间,可采用四舍五入,如值为7.8,则近似为8,如是7.2,则近似为7。
② 区间型
把原有值的区间描述转换成三角模糊数,l、m、r各个用户反馈的区间描述也转换成三角模糊数,把它的左、中、右值分别按上述办法与原有值的左、中、右值比较,计算贴近度和权值,再计算出反馈值,并与原有值的左、中、右值l、m、r求平均得校正值l′′、m′′、r′′。
然后把上面用三角模糊数表示的校正值,还原为区间表示的评价值。已知[α,β] 为评价值区间,区间[l,r] 为该评价区间内的一个评价值,三角模糊数现在已知评价值区间[α,β] 和三角模糊数,可以求出评价值区间[l,r]
③ 语言型
为简化计算,我们直接取中值作为评价值,如语言集合为<差,较差,一般,较好,好>,对应评价值为<0,2,5,8,10>,用户评价时选择“较好”,则取反馈值为8,如选择“较差”,则反馈值为2。然后按上述等级型中的办法求出校正值,并与评价值比较,可能该校正值落在两个评价值之间,按接近程度取其中的一个评价值。
本文提出了一个兼容UDDI的Web服务质量模型,即QoSUDDI模型,在系统实现中重点介绍了对原有UDDI的兼容、指标的模糊处理、对同质服务的排序输出和对用户反馈的去噪声处理。我们以该QoSUDDI模型为中心加上相应的前台,就可以形成一个较为完整的服务质量评价系统。
[1] 顾宁. Web Services 原理与研发实践[M] .北京:机械工业出版社,2006.
[2] Liu Yutu .QoS Computation and Policing in Dynamic Web Service Selection[C] // the 13th international World Wide Web conference on Alternate track. International World Wide Web Conference, New York,NY,USA,2004.
[3] 杨胜文.一种支持QoS约束的Web服务发现模型[J] .计算机学报,2005,28(4):589-594.
[4] Xu Ziqiang.reputation-enhanced web services discovery with Qos[D] . Ontario,Canada:Queen's University Kingston,2006:66-73.
[5] Chen Zhou.Semantics in Service Discovery and QoS Measurement[J] .IEEE Computer Society IT Pro,2005.7(2):29-34.
[6] 郑晓霞.基于QoS的Web服务发现模型研究[J] .情报科学,2007,25(2):249-253.
[7] 牟玉洁.面向服务质量的交互式 Web服务选择[J] .计算机集成制造系统,2006,12(5):788-794.
[8] Ivan Mecar.Agent-oriented Semantic Discovery and Matchmaking of Web Services[C] // Proceedings of the 8th International Conference, Zagreb,2005:603-607.
[9] 宋顺林.一种支持QoS约束的Web服务质量模型[J] .江苏大学学报:自然科学版,2006,27(5):450-453.
[10] 奚越.Web服务质量管理模型[D] .上海:上海交通大学,2008.
[11] 吴健.网络制造中WebService的服务质量模糊排序方法[J] .计算机辅助设计与图形学报,2005,17(7):1594-1599.
[12] 贾利军.电子商务环境中电子服务质量评价模型研究[D] . 武汉:华中科技大学,2006.
[13] 刘英华.可配置模糊综合评价系统研究与实现[D] .上海:上海交通大学,2002.
[14] 李研.一种考虑 QoS数据可信性的服务选择方法[J] .Journal of software,2008,19(10):2620-2627.
[15] 夏雷.基于反馈QoS的Web服务发现的研究与实现[D] .北京:中国石油大学,2007.