服务执行矩阵为服务诊断提供了一种特殊的分析服务动态行为的方式,它不断从服务的执行中收集历史数据,更新诊断的信息。服务执行矩阵是由一组数字和不同行为的标记组成的,矩阵中的每一行表示一条执行轨迹,而矩阵中的前m列表示服务中的m个行为,每个行为都通过一个标记来表示该行为是否存在于执行轨迹当中,也就是在执行轨迹当中该行为是否被执行;第m+1列表示每条执行轨迹执行失败的次数,第m+2列表示每条执行轨迹执行成功的次数,可参见图4.18。
图4.18 服务执行矩阵
定义4.49 一个服务执行矩阵SEMn(m+2)=[Tracknm,Cf,Cs],其中:
(1)n表示历史数据中执行轨迹的条数;
(2)m表示历史数据中行为的个数;
(3)Tracknm={tij|1≤i≤n,1≤j≤m},tij表示行为j在第i条执行轨迹中是否被执行,如果行为j在第i条执行轨迹中被执行,那么tij=1,否则tij=0;
(4)Cf={cfi|1≤i≤n},cfi表示第i条执行轨迹失败执行的次数;(www.xing528.com)
(5)Cs={csi|1≤i≤n},csi表示第i条执行轨迹成功执行的次数。
算法4.5给出了构建基本服务执行矩阵的方法,这里假设历史数据是已知的,并且数据格式规定如下:①历史数据HD={hd(i)|1≤i≤l},l表示HD中的执行路径条数;②hd(i)={r,b(j)|1≤j≤v}表示第i条执行路径,r表示第i条执行路径的执行结果,r=f表示第i条执行路径执行失败,r=s表示第i条执行路径执行成功,b(j)表示第i条执行路径中的第j个行为的标号,v表示i条执行路径执行行为的个数。
算法4.5 getSEM(hd)
输入:历史数据hd。
输出:服务执行矩阵SEM。
在算法4.5中,zero[1,m+2]表示构建一个1行,m+2列且值全为零的矩阵;SEM[k,m]表示SEM矩阵中第k行的前m个元素。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。