具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
考虑到目前请求在处理的过程中往往会涉及到多个系统的数据处理,即一个请求所在的调用链路常常会包括多个不同的系统,而上述多个系统中的每一个系统内对数据库、数据表等数据的操作处理对于其他系统是不可见,无法直接获取的。现有方法为了获取调用链路中系统之间、系统内的数据调数据处理信息,往往只能去获取链路上各个系统内的相关程序代码,再对代码进行人工分析以确定各个系统内部以及不同系统之间数据处理信息。但是,上述方法由于需要依赖人工分析,且要分析的代码的数量往往较多,工作量也相对较大,导致具体实施时,现有方法往往会存在确定过程复杂、实施成本较高、处理效率较低的技术问题。针对产生上述问题的根本原因,本说明书考虑可以先为每一个请求分配并设置一个唯一的身份标识,这样链路上的系统在响应请求进行数据处理时会记录下打印下该请求的身份标识,以标识出对应的请求。进而分析时,可以根据身份标识的获取目标请求的日志记录,例如目标请求的调用日志和目标请求的数据库日志,通过解析目标请求的日志记录,可以确定出响应于请求不同系统之间的调用信息,以及响应于请求系统内部的数据处理信息,进而能够确定出调用链路中完整的数据处理流程。这样可以避免基于现有方法需要依赖人工对代码进行分析所带来的问题,从而解决现有方法中存在的确定过程复杂、实施成本较高、处理效率较低的技术问题,达到能够高效、精确地确定出请求所在调用链路中具体的数据处理流程的效果。
在一个场景示例中,可以应用本说明书实施例提供的数据处理方法对用户A的请求所在的调用链路中的数据处理流程进行具体的分析确定。
参阅图1所示,通常用户向负责数据处理的服务器发送了一个请求s后,为了响应上述请求s,完成相应的数据处理,在实现过程中服务器会逐级调用多个系统分别进行相应的数据处理。具体的,例如会依次通过系统A、系统B、系统C逐级进行数据处理来完成该用户发出的请求。即用户的请求s会先进入系统A,在系统A内,系统A响应该请求s完成多次数据操作(或者数据处理)后,再将该请求s传递给系统B。接着,请求s进入系统B,在系统B内,系统B响应请求s完成对应的数据操作后,再将请求s传递至下一级系统,即系统C。请求s进入系统C后,在系统C内,系统C响应请求s完成相应的数据操作,这时才完成了针对用户发出的请求s的全部数据处理。其中,用户发送的请求s具体可以是一种数据处理请求,也可以是一种数据调用请求等。
在本实施方式中,具体实施时,参阅图2所示,在接收到用户发送的请求s时,负责数据处理的服务器会先给该请求s分配并设置一个唯一的身份标识,后续进行数据处理的过程中,系统A、系统B等所接收到的,以及向下一级系统传递的是携带有上述身份标识的请求s。其中,该身份标识与请求一一对应识。这样后续服务器可以根据该身份标识对请求s的执行调用情况进行追踪。
其中,上述身份标识具体可以是一种按照一定规则生成的字符串。其中,每一个字符串包括多个字符,而每个字符串中的字符的组合方式是唯一的,这样可以利用上述字符串作为身份标识用以指示某一个请求。此外,上述身份标识还可以是traceID(也可以称为uuid或traceInfo)。上述traceID是一种用于链路追踪的ID标识。当然,需要说明的是,上述所列举的身份标识只是为了更好地说明本说明书实施方式。具体实施时,也可以根据具体的场景选择除上述所列举的字符串、traceID以外的其他信息作为身份标识。对此,本说明书不作限定。
按照上述方式为请求s分配并设置了唯一的身份标识之后,请求s上携带有身份标识。这时,请求s传递至系统A时,系统A在接收到请求s时会建立调用日志,并在该日志上记录(或打印)下该请求s上的身份标识,以及进入系统A的时间。请求s在进入系统A后,系统A会响应请求s在系统A内进行多次数据操作。在系统A响应请求s在系统A内进行多次数据操作时,系统A还会建立数据库日志,并在该日志上记录(或打印)请求s的身份标识,以及在系统A内系统响应请求s对数据库的操作数据、对数据表的操作数据,以及该数据库日志的建立时间。
其中,上述系统A内系统响应请求s对数据库的操作数据至少包括以下至少之一:系统A响应请求s对数据库操作的操作类型(例如是查询操作或者更新操作等)、系统A响应请求s对数据库操作的操作时间、系统A响应请求s所操作的数据库的名称(或者编号、存储位置等)、系统A响应请求s对数据库操作的操作结果(例如执行失败或者执行成功等)等。当然,需要说明的是,上述所列举的系统A内系统响应请求s对数据库的操作数据只是为了更好地说明本说明书实施方式。具体实施时,还可以记录其他类型到的数据作为上述系统A内系统响应请求s对数据库的操作数据。对此,本说明书不作限定。
上述系统A内系统响应请求s对数据表的操作数据至少包括以下至少之一:系统A响应请求s对数据表操作的操作类型(例如是查询操作或者更新操作等)、系统A响应请求s对数据表操作的操作时间、系统A响应请求s所操作的数据表的名称(或者编号、存储位置等)、系统A响应请求s对数据表操作的操作结果(例如执行失败或者执行成功等)、系A统响应请求s对数据表操作的操作次数(例如系统A对1号数据表更新了3次)。当然,需要说明的是,上述所列举的系统A内系统响应请求s对数据表的操作数据只是为了更好地说明本说明书实施方式。具体实施时,还可以记录其他类型到的数据处理信息作为上述系统A内系统响应请求s对数据表的操作数据。对此,本说明书不作限定。
在系统A响应请求s完成多次数据操作后,系统A针对该请求s的数据库日志记录完毕,并将该日志存储在相应的存储设备中,以便后续使用。同时,系统A会将请求s传递至下一级系统,即系统B。在数据请求s离开系统A时,系统A会在之前的调用日志中记录下请求s离开系统A的时间,以及请求要进入的下一级系统的名称(或者编号)。这样系统A完成了针对请求s的调用日志的记录,并将该调用日志存储在存储设备中,以便后续使用。其中,系统A所记录的关于目标请求的s调用日志和数据库日志可以理解为是系统A记录的目标请求s的日志记录。
在本实施例中,需要说明的是,为了便于后续对数据库日志、调用日志中信息的分析、使用,上述数据库日志和调用日志具体可以是按照预设规则记录的日志。下面仅以数据库日志为例说明如何按照预设规则记录数据库日志,对于按照预设规则建立调用日志可以参照建立数据库日志的实现方式。在此,本说明书不作赘述。
系统A按照预设规则记录数据库日志具体可以包括:先记录请求s的身份标识和数据库日志的建立时间,再按照指定格式记录系统A内进行的多次数据操作,其中,上述指定格式可以表示为以下形式:操作开始时间,操作结束时间,操作对象名称,操作类型,操作执行结果等。当然,需要说明的是,上述所列举的指定格式只是一种示意性说明不应当构成对本说明书的不动限定。此外,在操作对象为某个数据表,在记录数据操作时,还可以再记录下操作次数等其他相关的操作信息。
按照与系统A处理时相似的方式,请求s在进入系统B后,B也会为请求s建立调用日志。并响应于请求s在系统B内进行多次数据操作,同时,记录下对应的数据库日志。其中,上述调用日志、数据库日志也是按照预设规则记录的,且也分别记录有请求s的身份标识。在系统B完成多次数据操作后,数据库日志记录完毕,存储至存储设备中。在请求s离开系统B时,调用日志记录完毕,存储至存储设备中。请求被传递至下一级系统,即系统C。
按照与系统A、系统B处理时相似的方式,系统C响应于请求s完成了多次数据操作,并按照预设规则记录、存储包含有请求s的身份标识的调用日志、数据库日志。至此,完成了针对用户的请求s的所有数据处理。
在完成针对用户的请求s的数据处理后,服务器会向用户反馈针对请求s的数据数据处理结果。如果该数据处理结果不准确,或者存在错误,可能在请求s所在的调用链路上某个数据处理环节出现了差错。例如,可能是在某个系统的数据操作存在错误,也可以能是系统之间的数据调用出现错误。这时为了能快速地寻找并处理调用链路上存在错误或出现操作异常的地方,避免后续出现同样的错误,这时服务器可以对请求s所在的调用链路中的数据处理流程进行检查、分析,例如可以在数据处理流程的关键环节位置部署核对关系,以核对目标请求所在的调用链路中多个系统中系统之间,以及系统中内部相应环节的数据调用情况以确定出链路中的异常位置。
在本实施例中,为了能够准确地确定出请求s所在的调用链路中的数据处理流程,具体实施时,可以参阅图3所示。获取目标请求s所在的调用链路中的多个系统的日志文件。其中,所述日志文件包括通过唯一性身份标识来标识请求的日志记录,上述多个系统至少包括了系统A、系统B、系统C等。具体的,可以从用于存储各个系统的日志数据的存储设备中获取所述多个系统的日志文件。
考虑到请求s携带有唯一的身份标识,且请求s所在的调用链路中的各个系统又是分别按照预设规则记录请求s日志记录(即与请求s关联的调用日志和数据库日志也各自携带有请求s的身份标识)。为了能从大量的日志记录中提取到所需要的目标请求的日志记录(即与请求s关联的请求s的调用日志和请求s的数据库日志),可以先从请求s上提取对应的身份标识,再根据身份标识从多个系统的日志文件中进行筛选以提取得到携带有与请求s的身份标识相同的身份标识的调用日志和数据库日志作为目标请求的调用日志和目标请求的数据库日志,即目标请求的日志记录。例如,根据请求s的身份标识可以筛选得到的以下的目标请求的调用日志和目标请求的数据库日志:系统A记录的调用日志A1和数据库日志A2、系统B记录的调用日志B1和数据库日志B2、系统C记录的调用日志C1和数据库日志C2,上述日志可以统称为目标请求的日志记录。
在得到目标请求的日志记录后,可以根据目标请求的调用日志和目标请求的数据库日志分别确定请求s所在的调用链路中系统之间的调用信息和各个系统内部的对数据库、数据表的处理信息,进而可以根据上述信息确定出请求s所在的调用链路中完整的数据处理流程。
具体的,可以按照与记录目标请求的调用日志和目标请求的数据库日志所述采用的预设规则对应的切割规则,分别对目标请求的调用日志和目标请求的数据库日志进行切割处理;再从切割处理后的目标请求的调用日志和目标请求的数据库日志中提取目标请求的调用日志的建立时间和目标请求的数据库日志的建立时间;进而可以根据目标请求的调用日志的建立时间和目标请求的数据库日志的建立时间,遍历所述目标请求的调用日志和目标请求的数据库日志,以获取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据。
例如,在已知预设规则是先记录请求s的身份标识和数据库日志的建立时间,再按照指定格式记录系统内进行的多次数据操作,其中,上述指定格式可以表示为以下形式:操作开始时间,操作结束时间,操作对象名称,操作类型,操作执行结果时,可以按照与上述预设规则设置对应的切割规则对目标请求的调用日志和目标请求的数据库日志分别进行切割处理。下面以对目标请求的数据库日志中的数据库日志A2进行切割为例进行具体说明。可以将数据库日志A2中所记录的内容分割为以下几个内容单元:操作开始时间,操作结束时间,操作对象名称,操作类型,操作执行结果。按照上述方法对其他日志进行相似的处理,再以遍历的方式对分割后的日志中的内容单元进行提取,并根据内容单元中操作对象确定出系统响应于所述目标请求对数据库操作的操作类型、系统响应于所述目标请求对数据库操作的操作时间、系统响应于所述目标请求所操作的数据库的名称、系统响应于所述目标请求对数据库操作的操作结果等信息,从而获取系统响应于所述目标请求对数据库的操作数据;确定出系统响应于所述目标请求对数据表操作的操作类型、系统响应于所述目标请求对数据表操作的操作时间、系统响应于所述目标请求所操作的数据表的名称、系统响应于所述目标请求对数据表操作的操作结果、系统响应于所述目标请求对数据表操作的操作次数,从而获取系统响应于所述目标请求对数据表的操作数据。
在本实施例中,为了提高获取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据的处理效率,具体实施时,可以按照时间排序,采用深度优先算法遍历目标请求的数据库日志,以快速、准确地获取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据。当然,需要说明的是,上述所列举的采用深度优先算法对目标请求的数据库日志进行遍历只是为了更好地说明本说明书实施方式。具体实施时,也可以根据具体的应用场景和精度要求,选择其他合适的算法进行遍历,以获取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据。对此,本说明书不作限定。
具体实施时,根据目标请求的调用日志,可以确定出请求s所在的调用链路中多个系统中的各个系统之间的调用信息。具体的,通过解析调用日志A1可以确定出如下信息:请求s10:00进入系统A,10:30离开系统A,下一级系统为系统B。通过解析调用日志B1可以确定出如下信息:请求s10:31进入系统B,10:43离开系统B,上一级系统为系统A,下一级系统为系统C。通过解析调用日志C1可以确定如下信息:请求s10:45进入系统C,11:00离开系统C,上一级系统为系统B。这样综合上述信息,可以确定出在调用链路中系统之间的调用信息为:由系统A调用系统B,再由系统B调用系统C。
根据所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据,进一步可以确定所述目标请求所在的调用链路中的多个系统中的各个系统对数据库的处理信息和对数据表的处理信息。以确定系统A内的数据处理信息为例,可以综合基于数据库日志A1获得的系统A统响应于请求s对数据库的操作数据、系统A响应于请求s对数据表的操作数据中的具体内容,按照操作时间的先后顺序,可以整理出系统A内以下的数据处理信息:10:01至10:03对1号数据库进行了查询操作,操作成功;10:04至10:09对X数据表进行了查询操作,操作成功;10:10至10:12对Y数据表进行了更新操作,操作失败;10:13至10:14对1号数据库进行更新操作,操作成功;10:15至10:17对1号数据库进行查询操作,操作成功;10:18至10:23对X数据表进行查询操作,操作成功;10:24至10:29对Y数据表进行更新操作,操作失败。按照相似的方式,可以分别确定出系统B和系统C系统内部对数据库的处理信息和/或对数据表的处理信息。
进一步,可以根据请求s所在的调用链路中不同系统之间的调用信息、以及各个系统内部对数据库的处理信息和对数据表的处理信息,确定请求s所在的调用链路中的完整的数据处理流程。进而可以根据调用链路中的完整的数据数据处理流程分析具体哪一个环节,哪一个系统,或者哪一个数据处理操作发生了异常导致了数据处理结果出现了错误。
例如,根据上述调用链路中的数据处理流程,可以确定系统A、系统B、系统C之间调用信息正常,系统B、系统C内部的数据处理信息正常,而系统A中对Y数据表进行了两次更新操作,且两次操作均失败,可以判断在对Y数据表进行操作这一环节可能存在异常,进而可以针对系统A对Y数据表的操作进行更加精细的核对,以确定出调用链路出的异常位置以便及时解决,避免错误发生。
进一步的,为了便于服务器、后台人员更加清楚地分析链路中的异常位置,在确定请求s所在的调用链路中的数据处理流程后,还可以根据请求s所在的调用链路中的数据处理流程,建立针对请求s所在的调用链路的数据链路图,可以参阅图4。其中,上述数据链路图具体可以用于表征请求s所在的调用链路中多个系统中系统之间的调用信息,以及所述请求s所在的调用链路中多个系统中的各个系统内的数据处理信息。在图中可以清楚地获取系统之间的相互关系,以及各个系统内对数据库、数据表的操作情况,便于后台人员能够更加直观、清晰地对该链路进行分析、检查。
由上述场景示例可见,本说明书提供的数据处理方法,通过预先在请求中分配并设置唯一的身份标识,以便调用链路中的系统在记录与请求关联的日志记录时能够利用身份标识标识出对应的请求;进而分析时可以根据身份标识得到目标请求的日志记录;再根据上述日志记录,确定出包含有不同系统之间的调用信息,以及各个系统内部的数据处理信息的调用链路中的数据处理流程,从而解决了现有方法存在的确定过程复杂、实施成本较高、处理效率较低的技术问题,达到能够高效、精确地确定出目标请求所在调用链路中具体的数据处理流程的效果;还通过根据所述目标请求所在的调用链路中的数据处理流程,建立针对所述目标请求所在的调用链路的数据链路图,以便后台人员能够依据上述数据链路图,清楚、直观地对数据调用链路中各个系统各个环节的数据处理进行准确的检查、分析。
参阅图5,本说明书实施例提供了一种数据处理方法,其中,该方法具体实施时,可以包括以下内容:
S51:获取目标请求所在的调用链路中的多个系统的日志文件,其中,所述日志文件包括通过唯一性身份标识来标识请求的日志记录;
S52:根据所述目标请求的身份标识,从所述多个系统的日志文件中提取所述目标请求的日志记录;
S53:根据所述目标请求的日志记录,确定所述目标请求所在的调用链路中的数据处理流程。
在本实施方式中,上述请求具体可以是数据处理请求,也可以是数据调用请求等。当然,上述所列举的请求只是为了更好地说明本说明书实施方式。具体实施时,还可以引入其他类型的请求作为上述请求。对于请求的具体类型,本说明书不作限定。
在本实施方式中,需要说明的是,目前较为大型的软件系统或网站平台通常是由多个应用集群组成的复杂式分布式集群系统。即上述集群系统具体可以包括多个系统。例如,对于支付平台,可以包括有支付系统、收单系统、交易系统、账目系统等多个系统。
对于上述集群系统的服务器而言,在接收到请求时,为了响应请求,完成相应的数据处理,通常会调用集群系统中的多个系统中的多个相关系统,以形成用于进行数据处理的调用链路。具体执行时,可以由调用的多个系统在系统间逐级传递请求(例如上一级系统将请求传递给下一级系统);并在各个系统内部响应请求,进行数据操作(例如查询数据库或更新数据表等),从而完成针对该请求的数据处理。
由上可见,上述响应请求,并调用集群系统中的多个系统完成对应的数据处理,往往会涉及到多个系统的调用,每个系统内部又会涉及到对数据库、数据表等多种操作,因此整个请求所在的调用链路中的数据关系较为复杂。此外,由于系统内的数据操作通常对外是不可见的,导致机器往往无法直接获取到调用链路上各个系统内部的数据操作,增加了确定调用链路中数据调用关系的难度。但是很多时候确定调用链路中数据调用关系往往很重要。例如,可以通过分析调用链路中数据调用关系,快速地确定出调用链路中数据异常位置或环节,以便及时进行处理。还可以根据调用链路中数据调用关系,选择某些关键位置或环节部署监控点,以便对调用链路中关键位置或环节的数据处理情况进行实时监控等。当然,上述所列举的多种应用数据调用关系的方式只是一种示意性说明。具体实施时,还可以根据具体应用场景,将所确定的调用链路中的数据处理流程应用于其他的目的。对此,本说明书不作限定。在本实施例中,提供了一种数据处理方法,不同于现有方法,不需对各个系统内的程序代码进行人工分析,达到高效、精确地确定请求所在的调用链路中的数据处理流程的目的。
在本实施方式中,上述系统的日志文件具体可以理解为是系统记录的日志记录的总和。其中,上述系统的日志文件中具体可以包括请求的日志记录。上述请求日志记录可以理解为系统所记录的与该请求相关的数据处理、调用记录,例如,该系统响应于该请求对其他系统的调用,或者该系统响应请求对数据库的数据操作等等。进一步,上述系统的请求的日志记录又可以包括:系统的调用日志和系统的数据库日志等。当然,上述所列举的系统的调用日志和系统数据库日志只是一种示意性说明。
在本实施方式中,上述系统的调用日志,具体可以理解为一种由系统记录的,用于记录请求进入系统、离开系统等信息的日志数据。例如,当一个请求进入系统T时,系统T会为该请求建立一个调用日志,并在该日志上记录该请求进入系统T的时间、离开T的时间,以及该请求要进入的下一级的系统的名称,记录完毕后将该记录存储在指定的存储设备中,以备后续调用。
需要补充的是,除了获取系统的调用日志外,还可以获取系统的调用摘要日志等其他记录有请求在系统之间传递信息的日志替换上述调用日志。对此,本说明书不作限定。
在本实施方式中,上述系统的数据库日志,具体可以理解为一种由系统记录的,用于记录系统内部响应请求,进行多次数据操作处理(例如对数据库进行操作,对数据表进行操作)等信息的日志数据。例如,当一个请求进入系统T时,系统T会建立一个数据库日志,并在该日志上记录下系统T响应该请求对某个数据库进行查询,或者响应数据该处理请求对某个数据表进行更新等等。记录完毕后,也会将该记录存储至指定的存储设备中,以备后续调用。
其中,上述数据库日志具体可以是zdal日志。当然,上述所列举的zdal日志只是为了更好地说明本说明书实施方式。具体实施时,根据具体情况和精度要求,也可以获取其他的记录有系统内部响应请求进行多次数据操作的日志。对此,本说明书不作限定。
在本实施方式中,上述请求具体理解为用户或者后台人员为了完成某个数据处理工作向集群系统服务器发送的请求。基于上述请求,服务器可以调用集群中相关的多个系统,以响应该请求,完成对应的数据处理。
在本实施方式中,上述身份标识可以是一种按照一定规则生成的字符串。其中,每一个字符串包括多个字符,而每个字符串中的字符的组合方式是唯一的,这样可以利用上述字符串作为身份标识用以标识一个请求。此外,上述身份标识还可以是traceID(也可以称为uuid或traceInfo)。上述traceID是一种用于链路追踪的ID标识。当然,需要说明的是,上述所列举的身份标识只是为了更好地说明本说明书实施方式。具体实施时,也可以根据具体的场景选择除上述所列举的字符串、traceID以外的其他信息作为身份标识。对此,本说明书不作限定。
在本实施方式中,需要补充的是,当服务器收到用户或者后台人员发送的请求时,会预先为该请求分配并设置唯一的身份标识,即后续在链路中传递的请求是一种携带有身份标识的请求。这样系统在接收、传递该请求,以及响应该数据处请求进行数据操作时,会将上述身份标识一同记录(或者打印)在对应的请求的日志记录中,以标识出不同请求的日志记录。例如,具体实施时,系统会把上述身份标识打印在对应的请求的调用日志和数据库日志中,用于表示该调用日志和数据库日志中所记录的信息是与该请求关系的信息。即也可以理解为系统记录的调用日志和数据库日志是携带有请求的身份标识的调用日志和数据库日志。
为了便于后续能够自动、高效地对上述调用日志和数据库日志进行分析,系统在记录携带有的身份标识调用日志和数据库日志时,可以是按照预设规则记录的日志。下面仅以数据库日志为例说明如何按照预设规则记录数据库日志,对于按照预设规则建立调用日志可以参照建立数据库日志的实现方式。在此,本说明书不作赘述。
还需要说明的是,系统在记录请求的日志记录是按照预设规则记录的。以记录请求的数据库日志为例,系统按照预设规则记录数据库日志具体可以包括:先记录请求的身份标识和数据库日志的建立时间,再按照指定格式(按时间顺序)依次记录系统内进行的多次数据操作,其中,上述指定格式可以表示为以下形式:操作开始时间,操作结束时间,操作对象名称(例如数据库或数据表等),操作类型(例如查询或更新等),操作执行结果(例如操作成功或操作失败等)等。当然,需要说明的是,上述所列举的指定格式只是一种示意性说明不应当构成对本说明书的不动限定。此外,在操作对象为某个数据表,在记录数据操作时,还可以再记录下操作次数等其他相关的操作信息。
在本实施方式中,上述获取目标请求所在的调用链路中的多个系统的日志文件,具体可以理解为服务器从指定的存储日志文件的设备中调取集群系统中目标请求所在的调用链路中的多个系统的日志文件,以便后续的分析处理。
在本实施方式中,当需要对某个请求所在的调用链路中的数据处理流程进行确定时,可以将该请求作为目标请求,并提取目标请求的身份标识,进而可以将上述身份标识作为依据,从所述多个系统的日志文件中提取出目标请求的日志记录,即提取出目标请求的调用日志和目标请求的数据库日志。
在本实施方式中,上述目标请求的调用日志具体可以理解为目标请求所在的调用链路中的系统记录的,响应该目标请求所生成的调用日志,即与目标处理请求关联的调用日志。
其中,上述目标请求的调用日志具体可以记录有:请求的身份标识、请求进入系统的时间、请求离开系统的时间等信息。此外,上述目标请求的调用日志还可以记录有请求所在的调用链路中的下一级系统的名称、上一系统的名称等等。当然上述所列举的目标请求的调用日志所记录的信息只是一种示意性说明,不应当构成对本说明书的不当限定。
在本实施方式中,上述目标请求的数据库日志具体可以理解为目标请求所在的调用链路中的系统记录的,响应该目标请求所生成的数据库日志,即与目标处理请求关联的数据库日志。
其中,上述目标请求的数据库日志具体可以记录有:所述目标请求的身份标识、系统响应于所述目标请求对数据库的操作数据、系统响应于所述目标请求对数据表的操作数据、目标请求的数据库日志的建立时间等信息。当然上述所列举的目标请求的数据库日志所记录的信息只是一种示意性说明,不应当构成对本说明书的不当限定。
在本实施方式中,所述系统响应于所述目标请求对数据库的操作数据具体可以包括以下至少之一:系统响应于所述目标请求对数据库操作的操作类型、系统响应于所述目标请求对数据库操作的操作时间、系统响应于所述目标请求所操作的数据库的名称、系统响应于所述目标请求对数据库操作的操作结果等。其中,上述系统响应于所述目标请求对数据库操作的操作类型具体可以包括:查询操作,和/或,更新操作等。所述系统响应于所述目标请求对数据表的操作数据包括以下至少之一:系统响应于所述目标请求对数据表操作的操作类型、系统响应于所述目标请求对数据表操作的操作时间、系统响应于所述目标请求所操作的数据表的名称、系统响应于所述目标请求对数据表操作的操作结果、系统响应于所述目标请求对数据表操作的操作次数等。当然,需要说明的是,上述所列举的系统响应于所述目标请求对数据库的操作数据、系统响应于所述目标请求对数据表的操作数据只是为了更好地说明本说明书实施方式,不应当构成对本说明书的限定。
在本实施方式中,上述从所述多个系统的调用日志和数据库日志中筛选出携带有所述身份标识的调用日志和数据库日志作为目标请求的调用日志和目标请求的数据库日志,具体实施时,可以包括:根据目标调用请求的身份标识作为筛选的标准,从多个系统的调用日志中筛选出携带有身份标识的调用日志,作为目标请求的调用日志,即与目标请求关联的调用日志;从多个系统的数据库日志中筛选出携带有身份标识的数据库日志,作为目标请求的数据库日志,基于与目标请求关联的数据库日志。
在本实施方式中,上述根据所述目标请求的日志记录,确定所述目标请求所在的调用链路中的数据处理流程,具体可以是根据所述目标请求的调用日志、所述目标请求的数据库日志,确定所述目标请求所在的调用链路中的数据处理流程。具体实施时,参阅图6,可以包括以下内容:
S1:根据所述目标请求的调用日志,确定所述目标请求所在的调用链路中的多个系统中系统之间的调用信息;
S2:根据所述目标请求的数据库日志,确定所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息;
S3:根据所述目标请求所在的调用链路中的多个系统中系统之间的调用信息,和所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息,确定所述目标请求所在的调用链路中的数据处理流程。
在本实施方式中,所述目标请求所在的调用链路中的多个系统中的系统之间的调用信息具体可以包括:目标请求在调用链路中的多个系统之间的传递顺序(或者调用关系),以及目标请求进入各个系统的时间、离开各个系统的时间等。
在本实施方式中,所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息具体可以包括:调用链路中的各个系统内部响应于目标请求对数据库进行操作的处理信息(例如可以包括:操作数据库的名称、操作数据库的时间、操作数据库的类型、操作数据库的结果),以及对数据表进行操作的处理信息(例如可以包括:操作数据表的名称、操作数据表的时间、操作数据表的类型、操作数据表的结果、操作数据表的次数)等。
在本实施方式中,上述目标请求所在的调用链路中的数据处理流程具体可以理解为包含有目标请求所在的调用链路中的多个系统中系统之间调用信息,以及所述多个系统中各个系统对数据库、数据表处理信息完整的数据和链路关系。基于上述数据处理流程可以清晰、准确地分析多个系统在响应目标请求进行数据处理时的具体细节。
在本实施方式中,上述根据所述目标请求的数据库日志,确定所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息,具体实施时,可以包括以下内容:根据所述目标请求的数据库日志,获取所述目标请求所在的调用链路中的多个系统中各个系统系统响应于所述目标请求对数据库的操作数据、系统响应于所述目标请求对数据表的操作数据;根据各个系统系统响应于所述目标请求对数据库的操作数据,确定出所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息;根据各个系统系统响应于所述目标请求对数据表的操作数据,确定出所述目标请求所在的调用链路中的多个系统中各个系统对数据表的处理信息。
由上可见,本说明书实施例提供的数据处理方法,通过预先在请求中分配并设置唯一的身份标识,以便调用链路中的系统在记录与请求关联的日志记录时能够利用身份标识标识出对应的请求;进而分析时可以根据身份标识得到目标请求的日志记录;再根据上述日志记录,确定出包含有不同系统之间的调用信息,以及各个系统内部的数据处理信息的调用链路中的数据处理流程,从而解决了现有方法存在的确定过程复杂、实施成本较高、处理效率较低的技术问题,达到能够高效、精确地确定出目标请求所在调用链路中具体的数据处理流程的效果。
在一个实施方式中,所述目标请求的日志记录至少包括:目标请求的调用日志和目标请求的数据库日志等。当然,需要说明的是,上述所列举的目标请求的日志记录只是为了更好地说明本说明书实施方式。具体实施时,也可以根据具体情况和应有场景引入其他类型的日志作为上述目标请求的日志记录。对此,本说明书不作限定。
在一个实施方式中,所述身份标识具体可以包括traceID。当然上述所列举的traceID只是一种示意性说明。具体实施时,也可以采用其他的标识作为上述身份标识,对此,本说明书不作限定。
在一个实施方式中,所述数据库日志具体可以包括zdal日志。当然,需要说明的是上述所列举的zdal日志只是为了更好地说明本说明书实施方式。具体实施时,也可以根据具体情况选择其他的数据库日志。对此,本说明书不作限定。
在一个实施方式中,为了便于后续对目标请求的数据库日志的分析处理,所述目标请求的数据库日志具体可以为系统按照预设规则记录的数据库日志,其中,所述目标请求的数据库日志按照所述预设规则至少记录有以下信息:所述目标请求的身份标识、系统响应于所述目标请求对数据库的操作数据、系统响应于所述目标请求对数据表的操作数据、目标请求的数据库日志的建立时间等。当然,上述所列举的目标请求的数据库日志所记录的信息只是一种示意性说明,不应构成对本说明书的不当限定。
在一个实施方式中,所述系统响应于所述目标请求对数据库的操作数据具体可以包括以下至少之一:系统响应于所述目标请求对数据库操作的操作类型、系统响应于所述目标请求对数据库操作的操作时间、系统响应于所述目标请求所操作的数据库的名称、系统响应于所述目标请求对数据库操作的操作结果等。当然,上述所列举的系统响应于目标请求对数据库的操作数据只是一种示意性说明,不应构成对本说明书的不当限定。
在一个实施方式中,商户系统响应于所述目标请求对数据库操作的操作类型具体可以包括:查询操作,和/或,更新操作等。其中,上述更新操作具体又可以包括增加、删除和修改等。
在一个实施方式中,上述系统响应于所述目标请求对数据表的操作数据具体可以包括以下至少之一:系统响应于所述目标请求对数据表操作的操作类型、系统响应于所述目标请求对数据表操作的操作时间、系统响应于所述目标请求所操作的数据表的名称、系统响应于所述目标请求对数据表操作的操作结果、系统响应于所述目标请求对数据表操作的操作次数等。当然,上述所列举的系统响应于目标请求对数据表的操作数据只是一种示意性说明,不应构成对本说明书的不当限定。
在一个实施方式中,上述根据所述目标请求的调用日志、所述目标请求的数据库日志,确定所述目标请求所在的调用链路中的数据处理流程,具体实施时,可以包括以下内容:根据所述目标请求的调用日志,确定所述目标请求所在的调用链路中的多个系统中的系统之间的调用信息;从所述目标请求的数据库日志中所述提取系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据;根据所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据,确定所述目标请求所在的调用链路中的多个系统中的各个系统对数据库的处理信息和对数据表的处理信息;根据所述目标请求所在的调用链路中的多个系统中的系统之间的调用信息、所述目标请求所在的调用链路中的多个系统中的各个系统对数据库的处理信息和对数据表的处理信息,确定所述目标请求所在的调用链路中的数据处理流程。
在一个实施方式中,上述根据所述目标请求的日志记录,确定所述目标请求所在的调用链路中的数据处理流程,具体实施时,可以包括以下内容:
S1:根据所述目标请求的调用日志,确定所述目标请求所在的调用链路中的多个系统中系统之间的调用信息;
S2:根据所述目标请求的数据库日志,确定所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息;
S3:根据所述目标请求所在的调用链路中的多个系统中系统之间的调用信息,和所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息,确定所述目标请求所在的调用链路中的数据处理流程。
在一个实施方式中,上述根据所述目标请求的数据库日志,确定所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息,具体实施时,可以包括以下内容:从所述目标请求的数据库日志中提取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数;根据所述系统响应于所述目标请求对数据库的操作数据,确定系统对数据库的处理信息;根据所述统响应于所述目标请求对数据表的操作数据,确定系统对数据表的处理信息。
在一个实施方式中,从所述目标请求的数据库日志中提取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据,具体实施时,可以包括以下步骤:
S1:按照与所述预设规则对应的切割规则,对所述目标请求的数据库日志进行切割处理;
S2:从切割处理后的目标请求的数据库日志中提取所述目标请求的数据库日志的建立时间;
S3:根据所述目标请求的数据库日志的建立时间,遍历所述目标请求的数据库日志,以获取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据。
在本实施方式中,为了提高获取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据的效率,具体实施时,上述根据所述目标请求的数据库日志的建立时间,遍历所述目标请求的数据库日志,可以包括:根据所述目标请求的数据库日志的建立时间,按照数据库日志的建立时间排序,通过深度优先算法,遍历所述目标请求的数据库日志,以获取所述系统响应于所述目标请求对数据库的操作数据、所述系统响应于所述目标请求对数据表的操作数据。当然,需要说明的是,上述所列举的深度优先算法只是为了更好地说明本实施方式。具体实施时,也可以根据具体的场景和要求,选择其他算法对目标请求的数据库日志进行遍历。对此,本说明书不作限定。
在一个实施方式中,在确定所述目标请求所在的调用链路中的数据处理流程后,为了便于后台人员分析目标请求所在的调用链路中数据处理过程以及数据之间的相互联系,具体实施时,所述方法还可以包括以下内容:根据所述目标请求所在的调用链路中的数据处理流程,建立针对所述目标请求所在的调用链路的数据链路图,其中,所述数据链路图用于表征所述目标请求所在的调用链路中多个系统中系统之间的调用信息,以及所述目标请求所在的调用链路中多个系统中的各个系统内的数据处理信息(即各个系统内部对数据库、数据表的处理信息)。这样通过清晰、直观的数据链路图,后台可以更加准确、高效地确定出目标请求所在的调用链路具体涉及到哪几个系统,各个系统之间的上下级关系是怎样的,以及各个系统内部又分别对哪些数据库、数据表进行了操作,进行了怎样操作等等。从而可以避免去人工分析复杂繁多的程序代码,直接根据上述数据链路图确定出目标请求所在的调用链路上哪些位置环节存在数据异常,以便及时地对存在数据异常的链路位置环节进行相应的修改。
由上可见,本说明书提供的数据处理方法,通过预先在请求中分配并设置唯一的身份标识,以便调用链路中的系统在记录与请求关联的日志记录时能够利用身份标识标识出对应的请求;进而分析时可以根据身份标识得到目标请求的日志记录;再根据上述日志记录,确定出包含有不同系统之间的调用信息,以及各个系统内部的数据处理信息的调用链路中的数据处理流程,从而解决了现有方法存在的确定过程复杂、实施成本较高、处理效率较低的技术问题,达到能够高效、精确地确定出目标请求所在调用链路中具体的数据处理流程的效果;还通过根据所述目标请求所在的调用链路中的数据处理流程,建立针对所述目标请求所在的调用链路的数据链路图,以便后台人员能够依据上述数据链路图,清楚、直观地对数据调用链路中各个系统各个环节的数据处理进行准确的检查、分析。
本说明书实施例还提供了一种服务器,包括处理器以及用于存储处理器可执行指令的存储器,所述处理器具体实施时可以根据指令执行以下步骤:获取目标请求所在的调用链路中的多个系统的日志文件,其中,所述日志文件包括通过唯一性身份标识来标识请求的日志记录;根据所述目标请求的身份标识,从所述多个系统的日志文件中提取所述目标请求的日志记录;根据所述目标请求的日志记录,确定所述目标请求所在的调用链路中的数据处理流程。为了能够更加准确地完成上述指令,参阅图7,本说明书还提供了另一种具体的服务器,其中,所述用户端包括处理器701、存储器702,上述结构通过内部线缆相连,以便各个结构可以进行具体的数据交互。
其中,所述处理器701,具体可以用于获取目标请求所在的调用链路中的多个系统的日志文件,其中,所述日志文件包括通过唯一性身份标识来标识请求的日志记录;根据所述目标请求的身份标识,从所述多个系统的日志文件中提取所述目标请求的日志记录;根据所述目标请求的日志记录,确定所述目标请求所在的调用链路中的数据处理流程。
所述存储器702,具体可以用于目标请求的日志记录,以及存储相应的指令程序。
在本实施方式中,所述处理器701可以按任何适当的方式实现。例如,处理器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式等等。本说明书并不作限定。
在本实施方式中,所述存储器702可以包括多个层次,在数字系统中,只要能保存二进制数据的都可以是存储器;在集成电路中,一个没有实物形式的具有存储功能的电路也叫存储器,如RAM、FIFO等;在系统中,具有实物形式的存储设备也叫存储器,如内存条、TF卡等。
本说明书实施例还提供了一种基于上述支付方法的计算机存储介质,所述计算机存储介质存储有计算机程序指令,在所述计算机程序指令被执行时实现:获取目标请求所在的调用链路中的多个系统的日志文件,其中,所述日志文件包括通过唯一性身份标识来标识请求的日志记录;根据所述目标请求的身份标识,从所述多个系统的日志文件中提取所述目标请求的日志记录;根据所述目标请求的日志记录,确定所述目标请求所在的调用链路中的数据处理流程。
在本实施方式中,上述存储介质包括但不限于随机存取存储器(Random AccessMemory,RAM)、只读存储器(Read-Only Memory,ROM)、缓存(Cache)、硬盘(Hard DiskDrive,HDD)或者存储卡(Memory Card)。所述存储器可以用于存储计算机程序指令。网络通信单元可以是依照通信协议规定的标准设置的,用于进行网络连接通信的接口。
在本实施方式中,该计算机存储介质存储的程序指令具体实现的功能和效果,可以与其它实施方式对照解释,在此不再赘述。
参阅图8,在软件层面上,本说明书实施例还提供了一种数据处理装置,该装置具体可以包括以下的结构模块:
获取模块81,具体可以用于获取目标请求所在的调用链路中的多个系统的日志文件,其中,所述日志文件包括通过唯一性身份标识来标识请求的日志记录;
提取模块82,具体可以用于根据所述目标请求的身份标识,从所述多个系统的日志文件中提取所述目标请求的日志记录;
确定模块83,具体可以用于根据所述目标请求的日志记录,确定所述目标请求所在的调用链路中的数据处理流程。
在本实施方式中,上述请求具体可以是数据处理请求,也可以是数据调用请求等。当然,上述所列举的请求只是为了更好地说明本说明书实施方式。具体实施时,还可以引入其他类型的请求作为上述请求。对于请求的具体类型,本说明书不作限定。
在一个实施方式中,所述目标请求的日志记录至少可以包括:目标请求的调用日志和目标请求的数据库日志等。当然,需要说明的是,上述所列举的标请求的调用日志和目标请求的数据库日志只是为了更好地说明本说明书实施方式。具体实施时,也可以引入除上述所列举的日志以外其他的日志作为上述目标请求的日志记录。对此,本说明书不作限定。
在一个实施方式中,所述身份标识具体可以包括traceID。当然上述所列举的traceID只是一种示意性说明。具体实施时,也可以采用其他的标识作为上述身份标识,对此,本说明书不作限定。
在一个实施方式中,所述数据库日志具体可以包括zdal日志。当然,需要说明的是上述所列举的zdal日志只是为了更好地说明本说明书实施方式。具体实施时,也可以根据具体情况选择其他的数据库日志。对此,本说明书不作限定。
在一个实施方式中,所述目标请求的数据库日志具体可以为系统按照预设规则记录的数据库日志,其中,所述目标请求的数据库日志按照所述预设规则至少记录有以下信息:所述目标请求的身份标识、系统响应于所述目标请求对数据库的操作数据、系统响应于所述目标请求对数据表的操作数据、目标请求的数据库日志的建立时间等。
在一个实施方式中,所述系统响应于所述目标请求对数据库的操作数据具体可以包括以下至少之一:系统响应于所述目标请求对数据库操作的操作类型、系统响应于所述目标请求对数据库操作的操作时间、系统响应于所述目标请求所操作的数据库的名称、系统响应于所述目标请求对数据库操作的操作结果等。
在一个实施方式中,系统响应于所述目标请求对数据表的操作数据具体可以包括以下至少之一:系统响应于所述目标请求对数据表操作的操作类型、系统响应于所述目标请求对数据表操作的操作时间、系统响应于所述目标请求所操作的数据表的名称、系统响应于所述目标请求对数据表操作的操作结果、系统响应于所述目标请求对数据表操作的操作次数。
在一个实施方式中,所述确定模块83,具体实施时,可以包括以下结构单元:
第一确定单元,具体可以用于根据所述目标请求的调用日志,确定所述目标请求所在的调用链路中的多个系统中系统之间的调用信息;
第二确定单元,具体可以用于根据所述目标请求的数据库日志,确定所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息;
第三确定单元,具体可以用于根据所述目标请求所在的调用链路中的多个系统中系统之间的调用信息,和所述目标请求所在的调用链路中的多个系统中各个系统对数据库的处理信息、对数据表的处理信息,确定所述目标请求所在的调用链路中的数据处理流程。
在一个实施方式中,所述装置具体还可以包括:建立模块,该模块具体可以用于根据所述目标请求所在的调用链路中的数据处理流程,建立针对所述目标请求所在的调用链路的数据链路图,其中,所述数据链路图用于表征所述目标请求所在的调用链路中多个系统中系统之间的调用信息,以及所述目标请求所在的调用链路中多个系统中的各个系统内的数据处理信息。
需要说明的是,上述实施例阐明的单元、装置或模块等,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。为了描述的方便,描述以上装置时以功能分为各种模块分别描述。当然,在实施本说明书时可以把各模块的功能在同一个或多个软件和/或硬件中实现,也可以将实现同一功能的模块由多个子模块或子单元的组合实现等。以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
由上可见,本说明书实施例提供的数据处理装置,通过预先在请求中分配并设置唯一的身份标识,以便调用链路中的系统在记录与请求关联的日志记录时能够利用身份标识标识出对应的请求;进而分析时可以通过提取模块根据身份标识得到目标请求的日志记录;再通过确定模块根据上述日志记录,确定出包含有不同系统之间的调用信息,以及各个系统内部的数据处理信息的调用链路中的数据处理流程,从而解决了现有方法存在的确定过程复杂、实施成本较高、处理效率较低的技术问题,达到能够高效、精确地确定出目标请求所在调用链路中具体的数据处理流程的效果;还通过建立模块根据所述目标请求所在的调用链路中的数据处理流程,建立针对所述目标请求所在的调用链路的数据链路图,以便后台人员能够依据上述数据链路图,清楚、直观地对数据调用链路中各个系统各个环节的数据处理进行准确的检查、分析。
虽然本说明书提供了如实施例或流程图所述的方法操作步骤,但基于常规或者无创造性的手段可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的装置或客户端产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行(例如并行处理器或者多线程处理的环境,甚至为分布式数据处理环境)。术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、产品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、产品或者设备所固有的要素。在没有更多限制的情况下,并不排除在包括所述要素的过程、方法、产品或者设备中还存在另外的相同或等同要素。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。
本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内部包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
本说明书可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构、类等等。也可以在分布式计算环境中实践本说明书,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本说明书可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本说明书的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,移动终端,服务器,或者网络设备等)执行本说明书各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例采用递进的方式描述,各个实施例之间相同或相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。本说明书可用于众多通用或专用的计算机系统环境或配置中。例如:个人计算机、服务器计算机、手持设备或便携式设备、平板型设备、多处理器系统、基于微处理器的系统、置顶盒、可编程的电子设备、网络PC、小型计算机、大型计算机、包括以上任何系统或设备的分布式计算环境等等。
虽然通过实施例描绘了本说明书,本领域普通技术人员知道,本说明书有许多变形和变化而不脱离本说明书的精神,希望所附的权利要求包括这些变形和变化而不脱离本说明书的精神。