服务依赖关系图的构造方法、系统及存储介质与流程

文档序号:17322473发布日期:2019-04-05 21:36阅读:319来源:国知局
服务依赖关系图的构造方法、系统及存储介质与流程

本发明涉及云计算技术领域,尤其涉及一种服务依赖关系图的构造方法、系统及存储介质。



背景技术:

云计算作为一种新型服务提供方式,获得了产业界和学术界的青睐。云计算的关键技术就是虚拟化技术,通过将各类资源进行虚拟化,云计算服务提供商能够很便捷的将各类资源进行定制交付给用户使用,众多应用也逐渐开始迁移到云计算集群内。传统的虚拟化技术包括kvm,xen等。但是传统的虚拟化技术由于过于笨重,对于应用集群内某个组件进行创建,修改以及迁移操作都十分的复杂,因此,云计算服务提供商需要更加轻量级的虚拟化技术,从而容器技术应运而生。

容器技术是一种轻量级的操作系统级的虚拟化技术。相较于传统的虚拟化技术对于硬件层的虚拟化,容器的虚拟化停留在操作系统层,使其无论是创建,修改还是迁移都十分的便捷。容器技术很快的被各类云计算服务提供商使用。由于容器的这些特点,用户在部署其应用的时候往往会将每个组件运行在独立的容器内,以便方便快捷的对应用进行维护,因此,也造成了容器云复杂的内部结构,与此同时,容器的弱隔离性的特点也导致了容器之间相互干扰较为严重。从而一旦某个容器出现了异常,异常将会迅速传播,进而影响到不同的服务组件,为此,我们需要实时获知服务间的依赖关系,以应用该异常情况。

对此,alizand等人在《rippler:delayinjectionforservicedependencydetection》文中的第三章提出了一种基于延迟注入的服务依赖关系判断方法,通过向服务注入延迟,统计延迟对服务造成的影响的传播路径,即延迟相关性从而判断服务之间的依赖关系。虽然这种方法能够判断服务之间的依赖关系,但是延迟注入需要对服务本身进行干扰,增加了依赖判断的开销,与此同时,统计延迟的传播需要消耗较长的时间,对于容器云平台内部快速变化的环境不能很好的适用。



技术实现要素:

本发明的目的在于提供一种服务依赖关系图的构造方法、系统及存储介质,以解决现有的服务依赖关系判断方式存在的开销大,且判断准确性低的技术问题。

为了解决上述问题,本发明提供了一种服务依赖关系图的构造方法,其包括如下步骤:

s1,采集服务间通信的所有tcp数据包;

s2,构造未判断服务节点集合k={vi},且创建依赖关系图g={eij};

s3,从未判断服务节点集合k中选取服务节点vk,并获取与服务节点vk关联的tcp数据包;

s4,根据服务节点vk关联的tcp数据包确认服务节点vk与其他服务节点之间的依赖关系,并根据确认的依赖关系修订依赖关系图g;

s5,从未判断服务节点集合k中剔除服务节点vk;

s6,判断未判断服务节点集合k是否为空,当未判断服务节点集合k为空时,则最终的依赖关系图g作为服务依赖关系图;当未判断服务节点集合k非空时,重复执行步骤s3-s6,直至未判断服务节点集合k为空。

作为本发明的进一步改进,步骤s4,包括:

s40,构造未处理tcp数据包集合m={mn},未处理tcp数据包集合m包含服务节点vk关联的所有tcp数据包;

s41,从未处理tcp数据包集合m中选取tcp数据包mn,并根据tcp数据包mn解析出非服务节点vkip地址的目标ip地址,目标ip地址对应服务节点vl;

s42,获取服务节点vk与服务节点vl之间的通信tcp数据包,并根据通信tcp数据包确认服务节点vk与服务节点vl之间的依赖关系,以及根据该确认的依赖关系修订依赖关系图g;

s43,从未处理tcp数据包集合m中剔除tcp数据包mn和通信tcp数据包;

s44,判断未处理tcp数据包集合m是否为空,当未处理tcp数据包集合m为空时,则执行步骤s5,当未处理tcp数据包集合m非空时,重复执行步骤s41-s44,直至未处理tcp数据包集合m为空。

作为本发明的进一步改进,步骤s42,包括:

s420,获取服务节点vk与服务节点vl之间的通信tcp数据包,并剔除通信tcp数据包中数据部分为0的tcp数据包;

s421,剔除处理后的tcp数据包按照时间信息从早到晚进行排序,并获取tcp数据包的包头部分,包头部分设有标志位;

s422,提取标志位为s、sa或fa的tcp数据包,并按照时间信息从早到晚进行排序;

s423,当首个标志位为s的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vlip地址,且随后出现的首个标志位为sa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vlip地址,且随后出现的首个标志位为fa的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vlip地址,且随后出现的首个标志位为fa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vlip地址,则确认服务节点vk依赖服务节点vl;

s424;将依赖关系图g中的ekl的值由0修订为1。

作为本发明的进一步改进,步骤s1,包括:

采集服务间所有的通信数据包,并从所有的通信数据包中提取所有tcp数据包。

为了解决上述问题,本发明还提供了一种服务依赖关系图的构造系统,其包括:

tcp数据包采集模块,用于采集服务间通信的所有tcp数据包;

初始创建模块,用于构造未判断服务节点集合k={vi},且创建依赖关系图g={eij};

服务节点选取处理模块,用于从未判断服务节点集合k中选取服务节点vk,并获取与服务节点vk关联的tcp数据包;

依赖关系确认及依赖图修订模块,用于根据服务节点vk关联的tcp数据包确认服务节点vk与其他服务节点之间的依赖关系,并根据确认的依赖关系修订依赖关系图g;

已处理服务节点剔除模块,用于从未判断服务节点集合k中剔除服务节点vk;

服务节点判断及控制处理模块,用于判断未判断服务节点集合k是否为空,当未判断服务节点集合k为空时,则最终的依赖关系图g作为服务依赖关系图;当未判断服务节点集合k非空时,重复执行服务节点选取处理模块、依赖关系确认及依赖图修订模块、已处理服务节点剔除模块和服务节点判断及控制处理模块,直至未判断服务节点集合k为空。

作为本发明的进一步改进,依赖关系确认及依赖图修订模块包括:

未处理数据包集合构造子模块,用于构造未处理tcp数据包集合m={mn},未处理tcp数据包集合m包含服务节点vk关联的所有tcp数据包;

通信服务节点确认子模块,用于从未处理tcp数据包集合m中选取tcp数据包mn,并根据tcp数据包mn解析出非服务节点vkip地址的目标ip地址,目标ip地址对应服务节点vl;

依赖关系确认及依赖图修订子模块,用于获取服务节点vk与服务节点vl之间的通信tcp数据包,并根据通信tcp数据包确认服务节点vk与服务节点vl之间的依赖关系,以及根据该确认的依赖关系修订依赖关系图g;

已处理数据包剔除子模块,用于从未处理tcp数据包集合m中剔除tcp数据包mn和通信tcp数据包;

数据包判断及控制处理子模块,判断未处理tcp数据包集合m是否为空,当未处理tcp数据包集合m为空时,则执行已处理服务节点剔除模块,当未处理tcp数据包集合m非空时,重复执行通信服务节点确认子模块、依赖关系确认及依赖图修订子模块、已处理数据包剔除子模块和数据包判断及控制处理子模块,直至未处理tcp数据包集合m为空。

作为本发明的进一步改进,依赖关系确认及依赖图修订子模块包括:

tcp数据包获取及清洗单元,用于获取服务节点vk与服务节点vl之间的通信tcp数据包,并剔除通信tcp数据包中数据部分为0的tcp数据包;

tcp数据包排序及标志位获取单元,用于剔除处理后的tcp数据包按照时间信息从早到晚进行排序,并获取tcp数据包的包头部分,包头部分设有标志位;

特定标志位数据包提取及排序单元,用于提取标志位为s、sa或fa的tcp数据包,并按照时间信息从早到晚进行排序;

依赖关系确认单元,用于当首个标志位为s的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vlip地址,且随后出现的首个标志位为sa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vlip地址,且随后出现的首个标志位为fa的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vlip地址,且随后出现的首个标志位为fa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vlip地址,则确认服务节点vk依赖服务节点vl;

依赖关系图修订单元;将依赖关系图g中的ekl的值由0修订为1。

作为本发明的进一步改进,tcp数据包采集模块还用于采集服务间所有的通信数据包,并从所有的通信数据包中提取所有tcp数据包。

为了解决上述问题,本发明还提供了一种存储介质,其上存储有计算机程序,其特征在于,计算机程序被处理器执行时,实现上述服务依赖关系图的构造方法中的步骤。

与现有技术相比,本发明只需要采集和处理服务节点之间通信的tcp数据包即可进行服务节点间的依赖关系的判定,因此,减少了数据采集和处理量,从而降低了系统的开销;此外,服务节点之间会选择采用提供可靠传输的tcp协议进行通信,且tcp协议采用三次握手机制进行连接,同时采用四次分手机制断开连接,因此,通过分析tcp数据包,以确认依赖关系,提高了依赖关系的判断精准度。

附图说明

图1为本发明服务依赖关系图的构造方法一个实施例的流程示意图;

图2为图1的服务依赖关系图的构造方法中服务节点vk所有依赖关系确认流程一个实施例的流程示意图;

图3为图2服务依赖关系图的构造方法中服务节点vk与服务节点vl之间依赖关系确认流程一个实施例的流程示意图;

图4为本发明服务依赖关系图的构造系统一个实施例的功能模块示意图;

图5为本发明服务依赖关系图的构造系统中依赖关系确认及依赖图修订模块一个实施例的功能模块示意图;

图6为本发明服务依赖关系图的构造系统中依赖关系确认及依赖图修订子模块一个实施例的功能模块示意图。

具体实施方式

下面将结合本发明实施例中的附图,对实施例中的技术方案进行清楚、完整地描述,附图中类似的组件标号代表类似的组件。显然,以下将描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

图1-图3展示了本发明服务依赖关系图的构造方法的一个实施例。在本实施例中,如图1所示,该服务依赖关系图的构造方法包括如下步骤:

s1,采集服务间通信的所有tcp数据包。

在本实施例的基础上,其他实施例中,步骤s1具体包括:

采集服务间所有的通信数据包,并从所有的通信数据包中提取所有tcp数据包。

本实施例剔除无效数据包,从而减少了依赖关系判断的数据处理量,从而降低了系统的开销。

s2,构造未判断服务节点集合k={vi},且创建依赖关系图g={eij}。

在本实施例中,假设服务节点包括v1、v2、v3、v4、v5,则未判断服务节点集合k={v1,v2,v3,v4,v5},依赖关系图g={eij}为一个5*5的零矩阵。

s3,从未判断服务节点集合k中选取服务节点vk,并获取与服务节点vk关联的tcp数据包。

s4,根据服务节点vk关联的tcp数据包确认服务节点vk与其他服务节点之间的依赖关系,并根据确认的依赖关系修订依赖关系图g。

在本实施例的基础上,其他实施例中,参见图2,该步骤s4,包括:

s40,构造未处理tcp数据包集合m={mn},未处理tcp数据包集合m包含服务节点vk关联的所有tcp数据包。

在本实施例中,假设服务节点vk关联的所有tcp数据包为m1、m2、m3、m4和m5,则未处理tcp数据包集合m={m1,m2,m3,m4,m5}。

s41,从未处理tcp数据包集合m中选取tcp数据包mn,并根据tcp数据包mn解析出非服务节点vkip地址的目标ip地址,目标ip地址对应服务节点vl。

在本实施例中,假设选取的是tcp数据包m1,若该tcp数据包m1是服务节点vk发送的,则解析该tcp数据包m1的源ip地址为服务节点vk的ip地址,则目的ip地址即为服务节点vl的ip地址。若该tcp数据包m1是服务节点vk接收的,则解析该tcp数据包m1的目的ip地址为服务节点vk的ip地址,则源ip地址即为服务节点vl的ip地址。

s42,获取服务节点vk与服务节点vl之间的通信tcp数据包,并根据通信tcp数据包确认服务节点vk与服务节点vl之间的依赖关系,以及根据该确认的依赖关系修订依赖关系图g。

在本实施例的基础上,其他实施例中,参见图3,该步骤s42,包括:

s420,获取服务节点vk与服务节点vl之间的通信tcp数据包,并剔除通信tcp数据包中数据部分为0的tcp数据包。

在本实施例中,剔除通信tcp数据包中数据部分为0的tcp数据包,既减少了依赖判断的处理数据量,进一步降低了系统开销,也避免了功能用空数据包(譬如:为了确认服务节点两者之间是否仍处理通信连接状态,发送的空数据包)对依赖关系判断的影响,从而进一步提升了依赖关系判断的精准度。

s421,剔除处理后的tcp数据包按照时间信息从早到晚进行排序,并获取tcp数据包的包头部分,包头部分设有标志位。

s422,提取标志位为s、sa或fa的tcp数据包,并按照时间信息从早到晚进行排序。

在本实施例中,提取标志位为s、sa或fa的tcp数据包,进一步减少了数据处理量,从而既进一步降低了系统开销,也提升了数据处理速率。

s423,当首个标志位为s的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vl的ip地址,且随后出现的首个标志位为sa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vl的ip地址,且随后出现的首个标志位为fa的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vlip地址,且随后出现的首个标志位为fa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vl的ip地址,则确认服务节点vk依赖服务节点vl。

在本实施例中,本实施例依据按照时间排序,且标志位为s、sa、fa的tcp数据包进行依赖关系的判断,进一步提升了依赖关系判断的精准度。

s424;将依赖关系图g中的ekl的值由0修订为1。

s43,从未处理tcp数据包集合m中剔除tcp数据包mn和通信tcp数据包。

s44,判断未处理tcp数据包集合m是否为空,当未处理tcp数据包集合m为空时,则执行步骤s5,当未处理tcp数据包集合m非空时,重复执行步骤s41-s44,直至未处理tcp数据包集合m为空。

s5,从未判断服务节点集合k中剔除服务节点vk;

s6,判断未判断服务节点集合k是否为空,当未判断服务节点集合k为空时,则最终的依赖关系图g作为服务依赖关系图;当未判断服务节点集合k非空时,重复执行步骤s3-s6,直至未判断服务节点集合k为空。

本实施例只需要采集和处理服务节点之间通信的tcp数据包即可进行服务节点间的依赖关系的判定,因此,减少了数据采集和处理量,从而降低了系统的开销;此外,服务节点之间会选择采用提供可靠传输的tcp协议进行通信,且tcp协议采用三次握手机制进行连接,同时采用四次分手机制断开连接,因此,通过分析tcp数据包,以确认依赖关系,提高了依赖关系的判断精准度。

应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。

图4展示了本发明服务依赖关系图的构造系统的一个实施例。在本实施例中,如图4所示,该服务依赖关系图的构造系统包括tcp数据包采集模块10、初始创建模块11、服务节点选取处理模块12、依赖关系确认及依赖图修订模块13、已处理服务节点剔除模块14和服务节点判断及控制处理模块15。

其中,tcp数据包采集模块10,用于采集服务间通信的所有tcp数据包;初始创建模块11,用于构造未判断服务节点集合k={vi},且创建依赖关系图g={eij};服务节点选取处理模块12,用于从未判断服务节点集合k中选取服务节点vk,并获取与服务节点vk关联的tcp数据包;依赖关系确认及依赖图修订模块13,用于根据服务节点vk关联的tcp数据包确认服务节点vk与其他服务节点之间的依赖关系,并根据确认的依赖关系修订依赖关系图g;已处理服务节点剔除模块14,用于从未判断服务节点集合k中剔除服务节点vk;服务节点判断及控制处理模块15,用于判断未判断服务节点集合k是否为空,当未判断服务节点集合k为空时,则最终的依赖关系图g作为服务依赖关系图;当未判断服务节点集合k非空时,重复执行服务节点选取处理模块12、依赖关系确认及依赖图修订模块13、已处理服务节点剔除模块14和服务节点判断及控制处理模块15,直至未判断服务节点集合k为空。

在本实施例的基础上,其他实施例中,参见图5,依赖关系确认及依赖图修订模块13包括未处理数据包集合构造子模块130、通信服务节点确认子模块131、依赖关系确认及依赖图修订子模块132、已处理数据包剔除子模块133和数据包判断及控制处理子模块134。

其中,未处理数据包集合构造子模块130,用于构造未处理tcp数据包集合m={mn},未处理tcp数据包集合m包含服务节点vk关联的所有tcp数据包;通信服务节点确认子模块131,用于从未处理tcp数据包集合m中选取tcp数据包mn,并根据tcp数据包mn解析出非服务节点vkip地址的目标ip地址,目标ip地址对应服务节点vl;依赖关系确认及依赖图修订子模块132,用于获取服务节点vk与服务节点vl之间的通信tcp数据包,并根据通信tcp数据包确认服务节点vk与服务节点vl之间的依赖关系,以及根据该确认的依赖关系修订依赖关系图g;已处理数据包剔除子模块133,用于从未处理tcp数据包集合m中剔除tcp数据包mn和通信tcp数据包;数据包判断及控制处理子模块134,判断未处理tcp数据包集合m是否为空,当未处理tcp数据包集合m为空时,则执行已处理服务节点剔除模块14,当未处理tcp数据包集合m非空时,重复执行通信服务节点确认子模块131、依赖关系确认及依赖图修订子模块132、已处理数据包剔除子模块133和数据包判断及控制处理子模块134,直至未处理tcp数据包集合m为空。

在本实施例的基础上,其他实施例中,参见图6,依赖关系确认及依赖图修订子模块132包括tcp数据包获取及清洗单元1320、tcp数据包排序及标志位获取单元1321、特定标志位数据包提取及排序单元1322、依赖关系确认单元1323和依赖关系图修订单元1324。

其中,tcp数据包获取及清洗单元1320,用于获取服务节点vk与服务节点vl之间的通信tcp数据包,并剔除通信tcp数据包中数据部分为0的tcp数据包;tcp数据包排序及标志位获取单元1321,用于剔除处理后的tcp数据包按照时间信息从早到晚进行排序,并获取tcp数据包的包头部分,包头部分设有标志位;特定标志位数据包提取及排序单元1322,用于提取标志位为s、sa或fa的tcp数据包,并按照时间信息从早到晚进行排序;依赖关系确认单元1323,用于当首个标志位为s的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vlip地址,且随后出现的首个标志位为sa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vlip地址,且随后出现的首个标志位为fa的tcp数据包的源ip地址为服务节点vk的ip地址,目的ip地址为服务节点vlip地址,且随后出现的首个标志位为fa的tcp数据包的目的ip地址为服务节点vk的ip地址,源ip地址为服务节点vlip地址,则确认服务节点vk依赖服务节点vl;依赖关系图修订单元1324;将依赖关系图g中的ekl的值由0修订为1。

在本实施例的基础上,其他实施例中,tcp数据包采集模块10还用于采集服务间所有的通信数据包,并从所有的通信数据包中提取所有tcp数据包。

所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将服务依赖关系图的构造系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述服务依赖关系图的构造系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。

在本申请所提供的实施例中,应该理解到,所揭露的服务依赖关系图的构造系统和服务依赖关系图的构造方法,可以通过其它的方式实现。例如,以上所描述的服务依赖关系图的构造系统实施例仅仅是示意性的,例如,模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。

另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

本申请实施例还提供了一种存储介质,用于存储计算机程序,其包含用于执行本申请上述服务依赖关系图的构造方法实施例所设计的程序数据。通过执行该存储介质中存储的计算机程序,可以实现本申请提供的服务依赖关系图的构造方法。

集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、u盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(rom,read-onlymemory)、随机存取存储器(ram,randomaccessmemory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括是电载波信号和电信信号。

以上对发明的具体实施方式进行了详细说明,但其只作为范例,本发明并不限制与以上描述的具体实施方式。对于本领域的技术人员而言,任何对该发明进行的等同修改或替代也都在本发明的范畴之中,因此,在不脱离本发明的精神和原则范围下所作的均等变换和修改、改进等,都应涵盖在本发明的范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1