CN110147309A - 信息生成方法和装置 - Google Patents
信息生成方法和装置 Download PDFInfo
- Publication number
- CN110147309A CN110147309A CN201810142033.8A CN201810142033A CN110147309A CN 110147309 A CN110147309 A CN 110147309A CN 201810142033 A CN201810142033 A CN 201810142033A CN 110147309 A CN110147309 A CN 110147309A
- Authority
- CN
- China
- Prior art keywords
- service
- calling
- vertex
- title
- called
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请公开了信息生成方法和装置。该方法的一具体实施方式包括:获取至少一条服务调用信息,其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称;对于至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值;根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表。该实施方式能够提高梳理各***之间的调用关系时的速度。
Description
技术领域
本申请实施例涉及计算机技术领域,具体涉及信息生成方法和装置。
背景技术
随着企业的不断发展壮大,企业信息***越来越复杂,一体化的***架构很难满足性能需求和易维护的需求,这种架构逐渐被面向服务的架构替代,原来一个***被垂直拆分成多个***,***之间通过服务调用来协作完成整体业务。但随着***被拆分的粒度越来越细,***之间的关系纵横交织,错综复杂,往往出现交叉依赖(调用),对可维护性造成挑战,于是服务治理的必要性非常大。然而服务治理离不开对服务之间依赖关系的梳理。
最常用的技术方案是人工梳理法,即由开发人员上报所负责的***的依赖的服务,由专门人员统计汇总后,人工描绘出产品依赖关系图。稍先进些的做法是汇总到表或者数据库中,通过编程找出各***的依赖关系,通过程序来绘制产品关系图。部分技术实力比较强的企业,会选择用源代码分析方法,通过对源代码的分析找出对应的调用关系,然后通过程序来绘制产品依赖关系图。
发明内容
本申请实施例提出了信息生成方法和装置。
第一方面,本申请实施例提供了一种信息生成方法,包括:获取至少一条服务调用信息,其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称;对于至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值;根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表,其中,调用关系表用于表征调用服务的***与提供服务的***以及各***的权值之间的对应关系。
在一些实施例中,该方法还包括:对于至少一条服务调用信息涉及的每个***,若该***的调用***集合和被调用***集合存在相同的***,则将该***与确定出的相同的***确定为互相调用的***组,若互相调用的***组中的***的权值不同,则从调用关系表中将调用服务的***的权值比提供服务的***的权值高的调用关系删除。
在一些实施例中,该方法还包括:基于调用关系表,生成有向图,其中,有向图中的边用于表征调用关系,边的始点用于表征调用服务的***,终点用于表征提供服务的***。
在一些实施例中,获取至少一条服务调用信息,包括:获取至少一个日志文件,其中,日志文件按照预定格式记录了服务调用信息;从至少一个日志文件中按照预定格式解析出至少一条服务调用信息。
在一些实施例中,服务调用信息还包括:服务的名称和调用时间;以及该方法还包括:对于至少一条服务调用信息中每条服务调用信息所指示的服务,根据该服务调用信息中调用服务的***的名称、提供服务的***的名称、服务的名称和调用时间,确定调用该服务的调用频率和调用量峰值。
在一些实施例中,有向图中每个顶点与层级对应;该方法还包括:将有向图中未提供服务的***对应的至少一个顶点确定为初始顶点,以及将初始顶点的层级设置为预定值;对于有向图中与初始顶点相连接的每个顶点,若该顶点作为有向边的终点时所对应的起点只有初始顶点,则将该顶点确定为次级顶点,以及将次级顶点的层级设置为预定值与预定步长之和;对于有向图中除初始顶点和各次级顶点外的每个顶点,采用广度遍历法,确定该顶点作为有向边的终点时所对应的至少一个起点和各起点的层级,以及将各起点的层级中的最大值递增预定步长设置为该顶点的层级。
在一些实施例中,该方法还包括:按照层级由大到小的顺序输出预定数量的顶点对应的***的名称。
第二方面,本申请实施例提供了一种信息生成装置,包括:获取单元,配置用于获取至少一条服务调用信息,其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称;确定单元,配置用于对于至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值;生成单元,配置用于根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表,其中,调用关系表用于表征调用服务的***与提供服务的***以及各***的权值之间的对应关系。
在一些实施例中,该装置还包括修正单元,配置用于:对于至少一条服务调用信息涉及的每个***,若该***的调用***集合和被调用***集合存在相同的***,则将该***与确定出的相同的***确定为互相调用的***组,若互相调用的***组中的***的权值不同,则从调用关系表中将调用服务的***的权值比提供服务的***的权值高的调用关系删除。
在一些实施例中,生成单元进一步配置用于:基于调用关系表,生成有向图,其中,有向图中的边用于表征调用关系,边的始点用于表征调用服务的***,终点用于表征提供服务的***。
在一些实施例中,获取单元进一步配置用于:获取至少一个日志文件,其中,日志文件按照预定格式记录了服务调用信息;从至少一个日志文件中按照预定格式解析出至少一条服务调用信息。
在一些实施例中,服务调用信息还包括:服务的名称和调用时间;以及该装置还包括统计单元,配置用于:对于至少一条服务调用信息中每条服务调用信息所指示的服务,根据该服务调用信息中调用服务的***的名称、提供服务的***的名称、服务的名称和调用时间,确定调用该服务的调用频率和调用量峰值。
在一些实施例中,有向图中每个顶点与层级对应;该装置还包括层级确定单元,配置用于:将有向图中未提供服务的***对应的至少一个顶点确定为初始顶点,以及将初始顶点的层级设置为预定值;对于有向图中与初始顶点相连接的每个顶点,若该顶点作为有向边的终点时所对应的起点只有初始顶点,则将该顶点确定为次级顶点,以及将次级顶点的层级设置为预定值与预定步长之和;对于有向图中除初始顶点和各次级顶点外的每个顶点,采用广度遍历法,确定该顶点作为有向边的终点时所对应的至少一个起点和各起点的层级,以及将各起点的层级中的最大值递增预定步长设置为该顶点的层级。
在一些实施例中,该装置还包括输出单元,配置用于:按照层级由大到小的顺序输出预定数量的顶点对应的***的名称。
第三方面,本申请实施例提供了一种电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如第一方面中任一的方法。
第四方面,本申请实施例提供了一种计算机可读介质,其上存储有计算机程序,其中,程序被处理器执行时实现如第一方面中任一的方法。
本申请实施例提供的信息生成方法和装置,通过从至少一条服务调用信息确定出每个***的调用***集合和被调用***集合,生成各***之间的调用关系表,从而提高梳理各***之间的调用关系时的速度。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:
图1是本申请可以应用于其中的示例性***架构图;
图2是根据本申请的信息生成方法的一个实施例的流程图;
图3是根据本申请的信息生成方法的一个应用场景的示意图;
图4是根据本申请的信息生成方法的又一个实施例的流程图;
图5是根据本申请的信息生成方法的又一个实施例生成的有向图;
图6是根据本申请的信息生成装置的一个实施例的结构示意图;
图7是适于用来实现本申请实施例的电子设备的计算机***的结构示意图。
具体实施方式
下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与有关发明相关的部分。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。
图1示出了可以应用本申请的信息生成方法或信息生成装置的实施例的示例性***架构100。
如图1所示,***架构100可以包括服务提供端101、统一服务中心102、日志分析器103、日志收集器104、调用关系接收器105、调用关系分析器106。服务提供端101可以是硬件服务器也可以是软件***。服务提供端101用于提供服务供其它***调用。统一服务中心102可以是硬件服务器也可以是软件***,统一服务中心102用于存储企业信息***之间的调用数据。日志分析器103可以是硬件服务器也可以是软件***,日志分析器103用于从日志文件中提取出与***调用信息相关的日志信息。日志收集器104可以是硬件服务器也可以是软件***,日志收集器104用于收集日志文件供日志分析器103使用。调用关系接收器105可以是硬件服务器也可以是软件***,调用关系接收器105用于接收调用信息。调用关系分析器106可以是硬件服务器也可以是软件***,调用关系分析器106用于从调用信息中分析出调用关系。网络用以在服务提供端101、统一服务中心102、日志分析器103、日志收集器104、调用关系接收器105、调用关系分析器106之间提供通信链路的介质。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
对于软件基础设施稍强,有统一服务框架的企业,企业所有信息***都注册到统一服务中心102中,无论是服务的提供方还是调用方。所有服务调用都通过这个统一服务中心102。
对于软件基础设施稍差,没有统一服务框架的企业。既然没有统一的服务框架,也就没有中心化的服务调用记录。有两个方案可以用来收集调用关系。第一种方法是在各个服务提供端101种植调用关系收集器(注意这里选择服务提供端的理由是服务提供端接到请求才代表是有效的调用),以异步方式发送到调用关系接收器105,最后通过调用关系分析器106得到调用关系。第二种方法是要求服务提供端101按照一定格式记录日志发送到日志收集器104,将日志收集器104采集的日志发送到日志分析器103分析后,再发送到调用关系接收器105,最后通过调用关系分析器106得到调用关系。
调用关系分析器106可以是提供各种服务的服务器或软件***,例如调用关系接收器105接收到的调用信息进行分析的后台分析服务器,后台分析服务器可以对接收到的调用信息等数据进行分析等处理,并将处理结果(例如调用关系表)存储。
需要说明的是,本申请实施例所提供的信息生成方法一般由调用关系分析器106执行,相应地,信息生成装置一般设置于调用关系分析器106中。
应该理解,图1中的服务提供端、统一服务中心、日志分析器、日志收集器、调用关系接收器、调用关系分析器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的服务提供端、统一服务中心、日志分析器,日志收集器、调用关系接收器、调用关系分析器。在由第三方服务器提供服务调用信息的情况下,也可以不需要服务提供端、统一服务中心、日志分析器,日志收集器、调用关系接收器。
继续参考图2,示出了根据本申请的信息生成方法的一个实施例的流程200。该信息生成方法,包括以下步骤:
步骤201,获取至少一条服务调用信息。
在本实施例中,信息生成方法运行于其上的电子设备(例如图1所示的调用关系分析器)可以通过有线连接方式或者无线连接方式从接收调用关系的服务器(例如图1所示的调用关系接收器)接收服务调用信息。其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称。这里所说的***可以是硬件***也可以是软件***。软件***是指由***软件、支撑软件和应用软件组成的计算机软件***,它是计算机***中由软件组成的部分。软件***可包括数据库***、操作***、文件管理***等用于实现计算机功能的各种软件。硬件***是指构成计算机的物理设备,即由机械、光、电、磁器件构成的具有计算、控制、存储、输入和输出功能的实体部件。调用是将程序的执行交给其他的代码段,通常是一个子例程,同时保存必要的信息,从而使被调用段执行完毕后返回到调用点继续执行。这里的被调用段所属的***为提供服务的***。调用点所属的***为调用服务的***。在代码中若a程序需要很长一段代码,则可以建立另外一个文件b存放这段代码,当a需要时候直接调用b。则a为调用服务的***,b为提供服务的***。提供服务的***也可以看作服务端***,调用服务的***可以看作是客户端***。
在本实施例的一些可选的实现方式中,获取至少一条服务调用信息,包括:获取至少一个日志文件,其中,日志文件按照预定格式记录了服务调用信息;从至少一个日志文件中按照预定格式解析出至少一条服务调用信息。如图1中所示,日志收集器104从服务提供端采用到日志文件,日志文件除了包括服务调用信息之外还包括其它的信息,例如对数据库的增加、修改、删除等操作信息。日志分析器103将与服务调用相关的信息提取出来生成日志文件。发给调用关系接收器105,再由调用关系接收器105定时或接收到一定数量的日志文件后,发送给调用关系分析器106进行分析。
在本实施例的一些可选的实现方式中,服务调用信息还包括:服务的名称和调用时间;以及该方法还包括:对于至少一条服务调用信息中每条服务调用信息所指示的服务,根据该服务调用信息中调用服务的***的名称、提供服务的***的名称、服务的名称和调用时间,确定调用该服务的调用频率和调用量峰值。根据至少一条服务调用信息中的***名称和调用时间,可以确定出某个服务在哪个时刻被调用的次数最多,即为该时刻的调用次数为调用量峰值,该时刻也为调用量峰值时刻。调用频率指的是单位时间内被调用的次数。调用频率和调用量峰值都可用来衡量***的重要性。可用来为***分配资源,分配的资源与调用量峰值成正比,例如,在调用量峰值时刻根据调用量峰值为***分配合理的CPU资源或内存资源。12点为***A的调用量峰值时刻,则12点时为***A分配更多的资源。13为***B的调用量峰值时刻,则13点时为***B分配更多的资源。
步骤202,对于至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值。
在本实施例中,调用***集合和被调用***集合中存放的是***的名称。从至少一条服务调用信息中统计出相同的调用服务的***名称,和被它调用或调用它的***。可将***间的调用关系看作***依赖关系。就单个***而言,统计出所有和其有调用关系(包含调用它的、及它调用的)的***。我们将调用A的***的数量作为A的权值。***的权值可以反应***的重要程度。权值越高则***越重要。例如,服务调用信息的格式统一为:调用服务的***的名称-提供服务的***的名称。至少一条服务调用信息为S1-S2,S1-S3,S1-S4,S2-S3,S4-S1,S5-S1。则S1的调用***集合为{S4,S5},S1的被调用***集合为{S2,S3,S4},S4的调用***集合为{S1},S4的被调用***集合为{S1}。其中,S1和S4相互调用,S1的权值为2,S4的权值为1。S1对S4的调用为弱调用。
可选的,如果之前已经存在各***的调用***集合和被调用***集合,则获取到新的服务调用信息后,根据新获取的服务调用信息中调用关系向原有的调用***集合和被调用***集合增加***名称。
在本实施例的一些可选的实现方式中,对于至少一条服务调用信息涉及的每个***,若该***的调用***集合和被调用***集合存在相同的***,则将该***与确定出的相同的***确定为互相调用的***组,若互相调用的***组中的***的权值不同,则从调用关系表中将调用服务的***的权值比提供服务的***的权值高的调用关系删除。一个***即可作为提供服务的***也可作为调用服务的***。如果A的调用***集合和被调用***集合都出现了同一个***B(即说明***A和***B相互调用),则将权值高的调用权值低的调用关系标记为弱调用。(即假如***A和B相互调用,而***A和B相比之下A会被其他更多的***调用,则我们倾向于认为A***更加具有做服务提供方的特性,故将A对B的调用标记为弱调用,将B对A的调用标为强调用。)。这里分析出强弱调用主要是为后面梳理层级关系使用
步骤203,根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表。
在本实施例中,调用关系表用于表征调用服务的***与提供服务的***以及各***的权值之间的对应关系。调用关系表中记录了调用服务的***的名称和为该调用服务的***提供服务的***的名称。还记录了步骤202所确定出的各***的权值。每次收到新的服务调用信息后都确定出调用关系从而更新调用关系表。该调用关系表反映了各***之间的依赖关系,也可称为依赖关系表。调用关系表中可按***的权值从大到小的顺序排序。方便确定出重要的***。
继续参见图3,图3是根据本实施例的信息生成方法的应用场景的一个示意图。在图3的应用场景中,用户使用终端进行操作时,终端上安装的客户端***调用了服务端***,产生了服务调用信息,如301中虚线框所示。虚线框中A为服务的名称,S1为客户端***的名称、S2为服务端***的名称。至少一个客户端***对至少一个服务端***的调用可生成如301所示的至少一条服务调用信息。调用关系分析器根据服务调用信息301统计出提供服务的***(302中第一列所示)、调用服务的***(302中第三列所示)和提供服务的***的权值(302中第二列所示)。然后生成了调用关系表302。权值的取值可以根据所调用服务的***的数量所确定,例如,***S1被***S7、S8、S9、S10所调用,因此S1的权值为4。
本申请的上述实施例提供的方法通过将调用某***的其它***的数量与***的权值相关联,生成包括***的权值的调用关系表,从而提高梳理各***之间的调用关系时的速度。
进一步参考图4,其示出了信息生成方法的又一个实施例的流程400。该信息生成方法的流程400,包括以下步骤:
步骤401,获取至少一条服务调用信息。
步骤402,对于至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值。
步骤403,根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表。
步骤401-403与步骤201-203基本相同,因此不再赘述。
步骤404,基于调用关系表,生成有向图。
在本实施例中,基于步骤403生成的调用关系表,生成有向图,即调用关系图。其中,有向图中的边用于表征调用关系,边的始点用于表征调用服务的***,终点用于表征提供服务的***。如图5所示,S1、S2、S3、S4、S5、S6用于表征***,S1调用了S3,S2调用了S3、S4、S5、S3调用了S4,S5调用了S6。根是虚拟的顶点,与根相连接的顶点不被其它***调用。调用关系分析时会将接收到的调用信息确定出的调用关系逐个添加到树网结构(如图5所示的有向图)中,每增加一个调用关系,都会检测树网结构中是否出现了循环调用(这里使用广度遍历法,看调用的结点是否会找到自己,能找到就说明存在有循环调用。注意,不能用深度遍历法,否则可能会陷到循环调用里出不来),如果新加入的调用造成了循环调用,如果这个调用是权值高的调用权值低的情况,则标记为弱调用,所有弱调用在层次图中均不考虑。通过这种方式,将所有依赖依次添加完毕后,最终便可构造出一个不存在循环调用的自上而下单向的树网结构。也可先从调用关系表中将调用服务的***的权值比提供服务的***的权值高的调用关系删除,然后再生成有向图。
步骤405,确定有向图的各顶点的层级。
在本实施例中,有向图中每个顶点与层级对应;该方法还包括:将有向图中未提供服务的***对应的至少一个顶点确定为初始顶点,以及将初始顶点的层级设置为预定值;对于有向图中与初始顶点相连接的每个顶点,若该顶点作为有向边的终点时所对应的起点只有初始顶点,则将该顶点确定为次级顶点,以及将次级顶点的层级设置为预定值与预定步长之和;对于有向图中除初始顶点和各次级顶点外的每个顶点,采用广度遍历法,确定该顶点作为有向边的终点时所对应的至少一个起点和各起点的层级,以及将各起点的层级中的最大值递增预定步长设置为该顶点的层级。
例如,使用广度检测法来确定有向图中各顶点的层级,如图5所示,可从根节点往下依次确认,除了最上方的与根节点相连接的顶点外,对任一顶点进行层级确认时采用如下方式:
假设第i个顶点Si的层级为LSi(i=1,2,3,…n),LSi是一个数值。设调用第j个顶点Sj的所有顶点集合为set(Sj),(j=1,2,3,…n,且i≠j),顶点Si调用顶点Sj,则顶点Sj的层级LSj应为调用第j个顶点Sj的所有顶点Si的层级中的最大值加1,即对于任一顶点Sj,计算其层级LSj的公式为:
LSj=MAX(LSi)+1,
其中,顶点Si调用顶点Sj,Si∈set(Sj),
i=1,2,3,…n;j=1,2,3…n,且i≠j。
如图5所示,S1、S2为初始顶点,设置S1、S2的层级为1,则次级顶点S3和S5的层级为2,S4为S3的层级和S2的层级中的最大值加1,即S4的层级为3。S6的层级为3。
在本实施例的一些可选的实现方式中,该方法还包括:按照层级由大到小的顺序输出预定数量的顶点对应的***的名称。层级的大小可以反应***的重要性,层级数越高则该***越重要。因此可根据层级数分配***占用的资源,例如,CPU、内存等。
从图4中可以看出,与图2对应的实施例相比,本实施例中的信息生成方法的流程400突出了生成有向图的步骤。由此,本实施例描述的方案可以引入调用关系相关数据,从而实现更全面的调用关系分析。
进一步参考图6,作为对上述各图所示方法的实现,本申请提供了一种信息生成装置的一个实施例,该装置实施例与图2所示的方法实施例相对应,该装置具体可以应用于各种电子设备中。
如图6所示,本实施例的信息生成装置600包括:获取单元601、确定单元602和生成单元603。其中,获取单元601配置用于获取至少一条服务调用信息,其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称;确定单元602配置用于对于至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值;生成单元603配置用于根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表,其中,调用关系表用于表征调用服务的***与提供服务的***以及各***的权值之间的对应关系。
在本实施例中,信息生成装置600的获取单元601、确定单元602和生成单元603的具体处理可以参考图2对应实施例中的步骤201、步骤202、步骤203。
在本实施例的一些可选的实现方式中,装置600还包括修正单元(未示出),配置用于:对于至少一条服务调用信息涉及的每个***,若该***的调用***集合和被调用***集合存在相同的***,则将该***与确定出的相同的***确定为互相调用的***组,若互相调用的***组中的***的权值不同,则从调用关系表中将调用服务的***的权值比提供服务的***的权值高的调用关系删除。
在本实施例的一些可选的实现方式中,生成单元603进一步配置用于:基于调用关系表,生成有向图,其中,有向图中的边用于表征调用关系,边的始点用于表征调用服务的***,终点用于表征提供服务的***。
在本实施例的一些可选的实现方式中,获取单元601进一步配置用于:获取至少一个日志文件,其中,日志文件按照预定格式记录了服务调用信息;从至少一个日志文件中按照预定格式解析出至少一条服务调用信息。
在本实施例的一些可选的实现方式中,服务调用信息还包括:服务的名称和调用时间;以及装置600还包括统计单元(未示出),配置用于:对于至少一条服务调用信息中每条服务调用信息所指示的服务,根据该服务调用信息中调用服务的***的名称、提供服务的***的名称、服务的名称和调用时间,确定调用该服务的调用频率和调用量峰值。
在本实施例的一些可选的实现方式中,有向图中每个顶点与层级对应;装置600还包括层级确定单元(未示出),配置用于:将有向图中未提供服务的***对应的至少一个顶点确定为初始顶点,以及将初始顶点的层级设置为预定值;对于有向图中与初始顶点相连接的每个顶点,若该顶点作为有向边的终点时所对应的起点只有初始顶点,则将该顶点确定为次级顶点,以及将次级顶点的层级设置为预定值与预定步长之和;对于有向图中除初始顶点和各次级顶点外的每个顶点,采用广度遍历法,确定该顶点作为有向边的终点时所对应的至少一个起点和各起点的层级,以及将各起点的层级中的最大值递增预定步长设置为该顶点的层级。
在本实施例的一些可选的实现方式中,装置600还包括输出单元(未示出),配置用于:按照层级由大到小的顺序输出预定数量的顶点对应的***的名称。
下面参考图7,其示出了适于用来实现本申请实施例的电子设备的计算机***700的结构示意图。图7示出的电子设备仅仅是一个示例,不应对本申请实施例的功能和使用范围带来任何限制。
如图7所示,计算机***700包括中央处理单元(CPU)701,其可以根据存储在只读存储器(ROM)702中的程序或者从存储部分708加载到随机访问存储器(RAM)703中的程序而执行各种适当的动作和处理。在RAM 703中,还存储有***700操作所需的各种程序和数据。CPU 701、ROM 702以及RAM 703通过总线704彼此相连。输入/输出(I/O)接口705也连接至总线704。
以下部件连接至I/O接口705:包括键盘、鼠标等的输入部分707;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分707;包括硬盘等的存储部分708;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分709。通信部分709经由诸如因特网的网络执行通信处理。驱动器710也根据需要连接至I/O接口705。可拆卸介质711,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器710上,以便于从其上读出的计算机程序根据需要被安装入存储部分708。
特别地,根据本公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分709从网络上被下载和安装,和/或从可拆卸介质711被安装。在该计算机程序被中央处理单元(CPU)701执行时,执行本申请的方法中限定的上述功能。需要说明的是,本申请所述的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本申请的操作的计算机程序代码,所述程序设计语言包括面向对象的程序设计语言—诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言—诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络——包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本申请各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,该模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本申请实施例中所涉及到的单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元也可以设置在处理器中,例如,可以描述为:一种处理器包括获取单元、确定单元、信息选取单元和生成单元。其中,这些单元的名称在某种情况下并不构成对该单元本身的限定,例如,获取单元还可以被描述为“获取至少一条服务调用信息的单元”。
作为另一方面,本申请还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的装置中所包含的;也可以是单独存在,而未装配入该装置中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被该装置执行时,使得该装置:获取至少一条服务调用信息,其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称;对于至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值;根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表。
以上描述仅为本申请的较佳实施例以及对所运用技术原理的说明。本领域技术人员应当理解,本申请中所涉及的发明范围,并不限于上述技术特征的特定组合而成的技术方案,同时也应涵盖在不脱离所述发明构思的情况下,由上述技术特征或其等同特征进行任意组合而形成的其它技术方案。例如上述特征与本申请中公开的(但不限于)具有类似功能的技术特征进行互相替换而形成的技术方案。
Claims (16)
1.一种信息生成方法,包括:
获取至少一条服务调用信息,其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称;
对于所述至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值;
根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表,其中,所述调用关系表用于表征调用服务的***与提供服务的***以及各***的权值之间的对应关系。
2.根据权利要求1所述的方法,其中,所述方法还包括:
对于所述至少一条服务调用信息涉及的每个***,若该***的调用***集合和被调用***集合存在相同的***,则将该***与确定出的相同的***确定为互相调用的***组,若所述互相调用的***组中的***的权值不同,则从所述调用关系表中将调用服务的***的权值比提供服务的***的权值高的调用关系删除。
3.根据权利要求1或2所述的方法,其中,所述方法还包括:
基于所述调用关系表,生成有向图,其中,所述有向图中的边用于表征调用关系,边的始点用于表征调用服务的***,终点用于表征提供服务的***。
4.根据权利要求1所述的方法,其中,所述获取至少一条服务调用信息,包括:
获取至少一个日志文件,其中,日志文件按照预定格式记录了服务调用信息;
从所述至少一个日志文件中按照所述预定格式解析出至少一条服务调用信息。
5.根据权利要求1所述的方法,其中,服务调用信息还包括:服务的名称和调用时间;以及
所述方法还包括:
对于所述至少一条服务调用信息中每条服务调用信息所指示的服务,根据该服务调用信息中调用服务的***的名称、提供服务的***的名称、服务的名称和调用时间,确定调用该服务的调用频率和调用量峰值。
6.根据权利要求3所述的方法,其中,所述有向图中每个顶点与层级对应;以及
所述方法还包括:
将所述有向图中未提供服务的***对应的至少一个顶点确定为初始顶点,以及将所述初始顶点的层级设置为预定值;
对于所述有向图中与所述初始顶点相连接的每个顶点,若该顶点作为有向边的终点时所对应的起点只有所述初始顶点,则将该顶点确定为次级顶点,以及将所述次级顶点的层级设置为预定值与预定步长之和;
对于所述有向图中除所述初始顶点和各次级顶点外的每个顶点,采用广度遍历法,确定该顶点作为有向边的终点时所对应的至少一个起点和各起点的层级,以及将各起点的层级中的最大值递增所述预定步长设置为该顶点的层级。
7.根据权利要求6所述的方法,其中,所述方法还包括:
按照层级由大到小的顺序输出预定数量的顶点对应的***的名称。
8.一种信息生成装置,包括:
获取单元,配置用于获取至少一条服务调用信息,其中,服务调用信息包括调用服务的***的名称、提供服务的***的名称;
确定单元,配置用于对于所述至少一条服务调用信息涉及的每个***,根据各条服务调用信息中调用服务的***的名称和提供服务的***的名称,确定调用该***的至少一个***作为该***的调用***集合,确定该***所调用的至少一个***作为该***的被调用***集合,确定调用该***的数量作为该***的权值;
生成单元,配置用于根据各***的调用***集合、各***的被调用***集合、各***的权值生成各***之间的调用关系表,其中,所述调用关系表用于表征调用服务的***与提供服务的***以及各***的权值之间的对应关系。
9.根据权利要求8所述的装置,其中,所述装置还包括修正单元,配置用于:
对于所述至少一条服务调用信息涉及的每个***,若该***的调用***集合和被调用***集合存在相同的***,则将该***与确定出的相同的***确定为互相调用的***组,若所述互相调用的***组中的***的权值不同,则从所述调用关系表中将调用服务的***的权值比提供服务的***的权值高的调用关系删除。
10.根据权利要求8或9所述的装置,其中,所述生成单元进一步配置用于:
基于所述调用关系表,生成有向图,其中,所述有向图中的边用于表征调用关系,边的始点用于表征调用服务的***,终点用于表征提供服务的***。
11.根据权利要求8所述的装置,其中,所述获取单元进一步配置用于:
获取至少一个日志文件,其中,日志文件按照预定格式记录了服务调用信息;
从所述至少一个日志文件中按照所述预定格式解析出至少一条服务调用信息。
12.根据权利要求8所述的装置,其中,服务调用信息还包括:服务的名称和调用时间;以及
所述装置还包括统计单元,配置用于:
对于所述至少一条服务调用信息中每条服务调用信息所指示的服务,根据该服务调用信息中调用服务的***的名称、提供服务的***的名称、服务的名称和调用时间,确定调用该服务的调用频率和调用量峰值。
13.根据权利要求10所述的装置,其中,所述有向图中每个顶点与层级对应;以及
所述装置还包括层级确定单元,配置用于:
将所述有向图中未提供服务的***对应的至少一个顶点确定为初始顶点,以及将所述初始顶点的层级设置为预定值;
对于所述有向图中与所述初始顶点相连接的每个顶点,若该顶点作为有向边的终点时所对应的起点只有所述初始顶点,则将该顶点确定为次级顶点,以及将所述次级顶点的层级设置为预定值与预定步长之和;
对于所述有向图中除所述初始顶点和各次级顶点外的每个顶点,采用广度遍历法,确定该顶点作为有向边的终点时所对应的至少一个起点和各起点的层级,以及将各起点的层级中的最大值递增所述预定步长设置为该顶点的层级。
14.根据权利要求13所述的装置,其中,所述装置还包括输出单元,配置用于:
按照层级由大到小的顺序输出预定数量的顶点对应的***的名称。
15.一种电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-7中任一所述的方法。
16.一种计算机可读介质,其上存储有计算机程序,其中,所述程序被处理器执行时实现如权利要求1-7中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810142033.8A CN110147309A (zh) | 2018-02-11 | 2018-02-11 | 信息生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810142033.8A CN110147309A (zh) | 2018-02-11 | 2018-02-11 | 信息生成方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110147309A true CN110147309A (zh) | 2019-08-20 |
Family
ID=67589000
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810142033.8A Pending CN110147309A (zh) | 2018-02-11 | 2018-02-11 | 信息生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110147309A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324470A (zh) * | 2020-01-20 | 2020-06-23 | 北京百度网讯科技有限公司 | 用于生成信息的方法及装置 |
CN111324471A (zh) * | 2020-01-22 | 2020-06-23 | 远景智能国际私人投资有限公司 | 服务调整方法、装置、设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105045574A (zh) * | 2015-06-24 | 2015-11-11 | 广东电网有限责任公司电力科学研究院 | 一种基于复杂网络故障传播的软件关键函数辨识方法 |
US20160226745A1 (en) * | 2015-02-02 | 2016-08-04 | Linkedin Corporation | Estimating latency of an application |
CN106657192A (zh) * | 2015-11-03 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于呈现服务调用信息的方法与设备 |
US9684524B1 (en) * | 2013-12-20 | 2017-06-20 | Amazon Technologies, Inc. | Service-oriented system optimization using trace data |
CN107306196A (zh) * | 2016-04-20 | 2017-10-31 | 中兴通讯股份有限公司 | 虚拟化服务监控方法和装置 |
-
2018
- 2018-02-11 CN CN201810142033.8A patent/CN110147309A/zh active Pending
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9684524B1 (en) * | 2013-12-20 | 2017-06-20 | Amazon Technologies, Inc. | Service-oriented system optimization using trace data |
US20160226745A1 (en) * | 2015-02-02 | 2016-08-04 | Linkedin Corporation | Estimating latency of an application |
CN105045574A (zh) * | 2015-06-24 | 2015-11-11 | 广东电网有限责任公司电力科学研究院 | 一种基于复杂网络故障传播的软件关键函数辨识方法 |
CN106657192A (zh) * | 2015-11-03 | 2017-05-10 | 阿里巴巴集团控股有限公司 | 一种用于呈现服务调用信息的方法与设备 |
CN107306196A (zh) * | 2016-04-20 | 2017-10-31 | 中兴通讯股份有限公司 | 虚拟化服务监控方法和装置 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111324470A (zh) * | 2020-01-20 | 2020-06-23 | 北京百度网讯科技有限公司 | 用于生成信息的方法及装置 |
CN111324470B (zh) * | 2020-01-20 | 2023-11-07 | 北京百度网讯科技有限公司 | 用于生成信息的方法及装置 |
CN111324471A (zh) * | 2020-01-22 | 2020-06-23 | 远景智能国际私人投资有限公司 | 服务调整方法、装置、设备及存储介质 |
CN111324471B (zh) * | 2020-01-22 | 2023-07-21 | 远景智能国际私人投资有限公司 | 服务调整方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108920222A (zh) | 一种基于规则引擎的业务处理方法和装置 | |
CN110019125A (zh) | 数据库管理的方法和装置 | |
CN110019080A (zh) | 数据访问方法和装置 | |
CN109299157A (zh) | 一种分布式大单表的数据导出方法及装置 | |
CN110427415A (zh) | 知识库共享方法、装置、***介质及电子设备 | |
CN109981322A (zh) | 基于标签的云资源管理的方法和装置 | |
CN109656744A (zh) | 基于Java注解实现数据校验和注入的方法和装置 | |
CN110019437A (zh) | 一种导出数据的方法和*** | |
CN109002440A (zh) | 用于大数据多维分析的方法、装置及*** | |
CN109903105A (zh) | 一种完善目标商品属性的方法和装置 | |
CN110147309A (zh) | 信息生成方法和装置 | |
CN113886485A (zh) | 数据处理方法、装置、电子设备、***和存储介质 | |
CN109284342A (zh) | 用于输出信息的方法和装置 | |
CN110109983A (zh) | 一种操作Redis数据库的方法和装置 | |
CN111414410A (zh) | 数据处理方法、装置、设备和存储介质 | |
CN109992496A (zh) | 一种用于自动化测试的数据处理方法和装置 | |
CN108733688A (zh) | 数据分析的方法、装置 | |
CN107656999B (zh) | 呼叫历史追溯方法、装置、电子设备、存储介质 | |
CN108959636A (zh) | 数据处理方法、装置、***、计算机可读介质 | |
CN110245014A (zh) | 数据处理方法和装置 | |
CN109492039A (zh) | 一种日志数据的记录方法、装置、电子设备及可读介质 | |
CN108845864A (zh) | 一种基于spring框架的JVM垃圾回收方法和装置 | |
CN109409419A (zh) | 用于处理数据的方法和装置 | |
CN111159207B (zh) | 一种信息处理方法和装置 | |
CN113918534A (zh) | 一种策略处理***及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |