一种非侵入式的服务依赖关系发现方法

文档序号:8445616阅读:298来源:国知局
一种非侵入式的服务依赖关系发现方法
【技术领域】
[0001] 本发明涉及云计算环境下服务依赖关系发现领域,尤其涉及一种非侵入式的服 务依赖关系发现方法。
【背景技术】
[0002] 随着云计算技术的飞速发展,越来越多的基础设施、平台以及软件被以服务的形 式提供给用户。而且,基础设施服务提供商、平台服务提供商和软件服务提供商一般来说都 不相同。所以基础设施服务提供商一般情况下都不了解软件服务提供商提供的软件的具体 实现框架。云计算环境下的软件服务多以组合服务的形式实现功能需求。如何在不侵犯软 件服务隐私的情况下,尽量获取更多的服务之间的依赖关系,有助于服务智能化调度、智能 化数据备份和软件错误回溯等。
[0003] 现有的服务依赖关系发现方法主要分为三个粒度。第一种粒度是源代码级依赖关 系发现,此种粒度需要以在软件的源代码中插粧的模式,来获取具体源代码调用与依赖关 系;第二种粒度是软件包的依赖关系发现,此种粒度也需要对软件源码有一定程度的了解, 在一定的位置截取系统消息,才能获取到软件的依赖关系;第三种粒度是服务之间的依赖 关系,此种粒度通过分析服务之间的相似性,完成相似的服务的聚类的模式,找到依赖的服 务群组。第三种粒度可以在不了解软件的源代码的基础上,通过智能化分析方法,实现服务 依赖关系发现,更适用于以租赁模式为主的云计算环境。非侵入式的服务依赖关系发现面 临很多挑战,首先是如何准备地描述服务之间的相似性并得到服务之间的距离矩阵。其次 是如何准确的将相似的服务聚类。再次是如何在无人为参与的情况下,确定服务类数。

【发明内容】

[0004] 针对上述技术缺陷,本发明提出一种非侵入式的服务依赖关系发现方法。其目的 在于解决如何发现组成同一应用程序的服务之间的依赖关系的问题,提供一种通过计算服 务之间的资源使用情况和TCP/UDP连接数的相似度来度量服务距离并自动地完成服务聚 类的方法。
[0005] 为了解决上述技术问题,本发明的技术方案如下: 一种非侵入式的服务依赖关系发现方法,包括如下步骤:11)计算基于资源使用情况的 距离矩阵和基于TCP/UDP连接数的距离矩阵,并基于两个矩阵分别进行层次聚类,获得两 个一轮聚类结果; 所述资源使用情况距离矩阵为一种服务之间距离的表示方法,通过计算服务的多维资 源使用情况的皮尔森相似度的平均值来度量服务之间的相似度,然后取相似度的负值,BP 可获得资源使用情况距离矩阵; 所述TCP/UDP连接数距离矩阵为一种服务之间的距离的表示方法,通过计算服务上的TCP和UDP的连接数之和的皮尔森相似度,然后取相似度的负值,即可获得TCP/UDP连接数 距离矩阵; 所述层次聚类方法为一种聚类方法,通过计算所有待聚类的点之间的互相距离,将距 离最近的点归为一类; 12) 对于两个一轮聚类结果,通过计算类间距离分别重新构建距离矩阵,把聚类的类个 数压缩,分别选择具有最大Silhouette值的聚类结果作为二轮聚类结果; 13) 对比两个二轮聚类结果,选出具有交集个数超过2的类叠加形成新的类,在形成的 新类中计算每个点与其他所有点的距离之和,距离矩阵采用复合距离矩阵,并选取具有最 小距离之和的点加入初始类中心点集; 14) 遍历2到初始中心点集内点的个数减1的所有类数,在每一个类数下,选择互相距 离之和最大的类数个点作为初始类中心,然后采用KMeans方法将服务聚类到离其最近的 中心所在类中,取具有最大的Silhouette值的聚类个数和聚类结果作为最终服务聚类结 果; 初始中心点为聚类过程中被选择成为类中心点的服务。
[0006] 本发明的有益效果是:服务距离计算更有效:属于同一个应用程序的服务之间需 要协作处理用户需求。当请求进入应用程序之后,其处理过程都需要经过不同类型的节点 连续处理,这种情况会造成属于同一个应用中的不同服务的资源使用情况和TCP/UDP连接 数都具有相似的上升或者下降趋势。为了照顾特殊节点,本方法同时设计了一个综合考虑 资源使用情况相似度和TCP/UDP连接数相似度的方法来度量服务之间的距离。服务聚类更 准确:本方法设计一种分步计算方法,通过对比基于资源使用情况和TCP/UDP连接数的层 次聚类算法聚类结果,获取有效描述每个服务类的代表中心点,然后通过将剩余服务向中 心点靠拢的方式来完成聚类,聚类结果较单纯的层次聚类算法更准确。聚类算法复杂度更 低:相对于传统KMeans不断迭代所有服务来寻找最优的中心组,本方法通过重叠类过滤的 方式,降低了中心服务寻找的复杂度。
【附图说明】
[0007] 图1为服务依赖关系发现方法流程图。
【具体实施方式】
[0008] 下面将结合附图和具体实施例对本发明做进一步的说明。
[0009] 名词解释: 应用程序:可以独立满足用户需求的软件系统。
[0010] 服务:应用程序中完成整个系统功能中的某一个子模块。
[0011] 初始中心点:聚类过程中被选择成为类中心点的服务。
[0012] 资源使用情况相似度矩阵(CD):-种服务之间相似度的表示方法,通过计算服务 的多维资源使用情况的皮尔森相似度的平均值来度量服务之间的相似度。
[0013] 资源使用情况距离矩阵(UD):-种服务之间距离的表示方法,通过计算服务的 多维资源使用情况的皮尔森相似度的平均值来度量服务之间的相似度,然后取相似度的负 值,即可获得资源使用情况距离矩阵。
[0014] TCP/UDP连接数距离矩阵(TD):-种服务之间的距离的表示方法,通过计算服务 上的TCP和UDP的连接数之和的皮尔森相似度,然后取相似度的负值,即可获得TCP/UDP连 接数距离矩阵。
[0015] 最终距离矩阵:一种服务之间的距离表示方法,通过对比资源使用情况距离矩阵 与TCP/UDP连接数距离矩阵中两个服务之间的距离差异的绝对值,并综合考虑其与该差异 的绝对值,计算出的节点间的距离矩阵。
[0016] 层次聚类方法:一种聚类方法,通过计算所有待聚类的点之间的互相距离,将距 离最近的点归为一类。具体实现方法为,首先取距离最短的两点为一类,对于每一个一个新 点,都对比其与已有的类的距离和未被分类的点的距离,如果其到已有类的距离更小,则将 其归入与其距离最小的已有类,如果其到未分类点的距离更小,则将其同与其具有最短距 离的点一起重新构建一个新类。
[0017] KMeans聚类方法:一种聚类方法,通过选取初始聚类代表点,然后计算剩下的点 与初始聚类代表点之间的距离,并将剩下点的聚类到与其距离最近的初始聚类代表点所在 的类。
[0018] 本发明是通过以下技术方案来实现的: 一种非侵入式的服务依赖关系发现方法,包括以下步骤: 计算基于资源使用情况的距离矩阵和基于TCP/UDP连接数的距离矩阵,并基于两个矩 阵分别进行层次聚类,获得两个一轮聚类结果。对于两个一轮聚类结果,通过计算类间距离 分别重新构建距离矩阵,把聚类的类个数压缩,分别选择具有最大Silhouette值的聚类结 果作为二轮聚类结果。对比两个二轮聚类结果,选出具有交集个数超过2的类叠加形成新 的类,在形成的新类中计算每个点与其他所有点的距离之和,距离矩阵采用复合距离矩阵, 并选取具有最小距离之和的点加入初始类中心点集。遍历2到初始中心点集内点的个数减 1的所有类数,在每一个类数下,选择互相距离之和最大的类数个点作为初始类中心,然后 采用KMeans算法将服务聚类到离其最近的中心所在类中。取具有最大的Silhouette值的 聚类个数和聚类结果作为最终服务聚类结果。
[0019] 实施例一: 本发明是一种基于相似服务聚类的服务依赖发现方法,方法设计了图1的流程结构, 包括:
【主权项】
1. 一种非侵入式的服务依赖关系发现方法,其特征在于,包括如下步骤: 11) 计算基于资源使用情况的距离矩阵和基于TCP/UDP连接数的距离矩阵,并基于两 个矩阵分别进行层次聚类,获得两个一轮聚类结果; 所述资源使用情况距离矩阵为一种服务之间距离的表示方法,通过计算服务的多维资 源使用情况的皮尔森相似度的平均值来度量服务之间的相似度,然后取相似度的负值,BP 可获得资源使用情况距离矩阵; 所述TCP/UDP连接数距离矩阵为一种服务之间的距离的表示方法,通过计算服务上的TCP和UDP的连接数之和的皮尔森相似度,然后取相似度的负值,即可获得TCP/UDP连接数 距离矩阵; 所述层次聚类方法为一种聚类方法,通过计算所有待聚类的点之间的互相距离,将距 离最近的点归为一类; 12) 对于两个一轮聚类结果,通过计算类间距离分别重新构建距离矩阵,把聚类的类个 数压缩,分别选择具有最大Silhouette值的聚类结果作为二轮聚类结果; 13) 对比两个二轮聚类结果,选出具有交集个数超过2的类叠加形成新的类,在形成的 新类中计算每个点与其他所有点的距离之和,距离矩阵采用复合距离矩阵,并选取具有最 小距离之和的点加入初始类中心点集; 14) 遍历2到初始中心点集内点的个数减1的所有类数,在每一个类数下,选择互相距 离之和最大的类数个点作为初始类中心,然后采用KMeans方法将服务聚类到离其最近的 中心所在类中,取具有最大的Silhouette值的聚类个数和聚类结果作为最终服务聚类结 果; 初始中心点为聚类过程中被选择成为类中心点的服务。
【专利摘要】本发明公开了一种非侵入式的服务依赖关系发现方法,设计一种分步计算方法,为了照顾特殊节点,同时设计了一个综合考虑资源使用情况相似度和TCP/UDP连接数相似度的方法来度量服务之间的距离,服务聚类更准确:通过对比基于资源使用情况和TCP/UDP连接数的层次聚类算法聚类结果,获取有效描述每个服务类的代表中心点,然后通过将剩余服务向中心点靠拢的方式来完成聚类,聚类结果较单纯的层次聚类算法更准确,聚类算法复杂度更低:相对于传统KMeans不断迭代所有服务来寻找最优的中心组,本方法通过重叠类过滤的方式,降低了中心服务寻找的复杂度。
【IPC分类】G06F17-30, G06K9-62
【公开号】CN104765820
【申请号】CN201510161396
【发明人】尹建伟, 赵新奎, 李莹, 邓水光, 吴健, 吴朝晖
【申请人】浙江大学
【公开日】2015年7月8日
【申请日】2015年4月7日
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1