一种用于处理服务调用信息的方法与设备技术领域
本申请涉及计算机领域,尤其涉及一种用于处理服务调用信息的技
术。
背景技术
随着互联网的发展,诸如服务平台、在线商城等依托于网络的应用的
规模逐步扩大并采用分布式服务系统,其中,越来越多应用的服务之间相
互联系和依赖也日益紧密,从而使得在分布式系统中的调用关系错综复
杂,同一业务因为运行时的内外界因素不同使得其每次运行所调用的服务
也不尽相同,因此在业务运行过程中出现问题出现之后,往往难以定位和
监控,现有技术一般采用通过日志和追踪服务调用路径进行问题定位以及
通过监控业务运行中的失败服务调用进行监控。
然而,现有技术中通过日志和追踪服务调用路径进行问题定位的方式
繁琐耗时准确性偏低,且通过监控失败服务调用往往在发生问题之后不能
很好的进行问题的预先规避和预警。
发明内容
本申请的一个目的是提供一种用于处理服务调用信息的方法与设备,用
以解决分布式系统中业务运行中问题的定位以及业务运行监控预警问题。
为实现上述目的,根据本申请的一个方面,本申请提供了一种用于处
理服务调用信息的方法,该方法解决了分布式系统中业务运行中问题的定
位以及业务运行监控预警的问题,该方法包括:
获取分布式服务系统中的一个或多个服务调用链,其中,每个服务调用
链包括被顺序调用的一个或多个服务节点;
根据所述服务调用链构建对应的服务调用模型;
根据所述服务调用模型处理所述服务调用链。
根据本申请的另一个方面,本申请提供了一种用于处理服务调用信息
的设备,该设备解决了分布式系统中业务运行中问题的定位以及业务运行监
控预警的问题,该设备包括:
服务调用链获取装置,用于获取分布式服务系统中的一个或多个服务调
用链,其中,每个服务调用链包括被顺序调用的一个或多个服务节点;
服务调用模型构建装置,用于根据所述服务调用链构建对应的服务调用
模型;
处理装置,用于根据所述服务调用模型处理所述服务调用链。
与现有技术相比,本申请获取分布式服务系统中具有服务节点调用顺序
信息的服务调用链,将具有相同服务节点调用顺序的服务调用链构建为服务
调用模型,从而以服务调用模型为基础分析各服务节点的调用信息并据此分
析解决了对服务调用进行常态监控和运行问题快速定位问题,利用服务节点
的大数据信息进行分析和监控,提升了分布式服务系统的问题定位效率,增
加了分布式服务系统的可靠性。
附图说明
通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申
请的其它特征、目的和优点将会变得更明显:
图1示出根据本申请一个方面的一种用于处理服务调用信息的方法流
程图;
图2示出根据本申请另一个优选实例的一种用于处理服务调用信息的
方法中步骤S1流程图;
图3示出根据本申请又一个优选实例的一种用于处理服务调用信息的
方法中步骤S3流程图;
图4示出根据本申请再一个优选实例的一种用于处理服务调用信息的
方法中步骤S32流程图;
图5示出根据本申请另一个方面的一种用于处理服务调用信息的设备
示意图;
图6示出根据本申请另一个优选实例的一种用于处理服务调用信息的
设备中服务调用链获取装置示意图;
图7示出根据本申请又一个优选实例的一种用于处理服务调用信息的
设备中处理装置示意图;
图8示出根据本申请再一个优选实例的一种用于处理服务调用信息的
设备中监控单元示意图;
图9示出根据本申请再一个优选实例的服务调用示意图。
附图中相同或相似的附图标记代表相同或相似的部件。
具体实施方式
下面结合附图对本申请作进一步详细描述。
在本申请一个典型的配置中,终端、服务网络的设备和可信方均包括
一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器
(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash
RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以
由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结
构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相
变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器
(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电
可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读
光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、
磁盒式磁带,磁带磁盘存储或其他磁性存储设备或任何其他非传输介质,
可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读
介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和
载波。
图1示出根据本申请一个方面的一种用于处理服务调用信息的方法流
程图。包括步骤S1,步骤S2以及步骤S3。
其中,在步骤S1中设备1获取分布式服务系统中的一个或多个服务调用
链,其中,每个服务调用链包括被顺序调用的一个或多个服务节点;在步骤
S2中设备1根据所述服务调用链构建对应的服务调用模型;在步骤S3中设
备1根据所述服务调用模型处理所述服务调用链。
具体地,在步骤S1中设备1获取分布式服务系统中的一个或多个服务
调用链,其中,每个服务调用链包括被顺序调用的一个或多个服务节点。在
此,所述分布式服务系统包括但不限于面向服务架构或构建在分布式系统上
的软件系统。其中,所述服务节点包括但不限于所述分布式服务系统中供调
用的一项服务或一项功能,如在电商平台进行产品消费时的服务节点包括调
用用户名,调用用户关联账户,调取支付页面,获取安全验证,检验账户余
额等。所述服务调用链是指在所述分布式服务系统中所完成一次服务调用所
涉及的服务节点及其顺序,例如图9所示的服务调用示意图是以A服务节点
为入口的一个服务调用链,其中用圆圈标示的A、B、C、D均指代一个服务
节点,所示意的服务调用链的入口为服务节点A,而完成A需要先调用B再
调用C,又完成C需要调用D,因此图9中所示的服务调用中的服务调用链
中的服务调用节点是有调用顺序的,即所示的服务调用链的调用顺序为A→B
→C→D,其中,为了便于计算机语言进行识别图9中所示的服务调用链中服
务节点的调用顺序可以根据服务节点的被调用顺序将初始的入口节点的顺序
标为A0,接着调用的B标为B0.1即0代表A“.”号后面为接在A后面调用
的第1个服务节点,接着调用C标为C0.2即0代表A“.”号后面为接在A
后面调用的第2个服务节点,接着为了完成C需要调用的D可知D是为了完
成C所调用的,因此D标为D0.2.1即0代表A“.”号后面2代表C再“.”
号后面1代表为C后面调用的第1个节点,因此,图9中的拓扑图表示的调
用链路即可表示为A0,B0.1,C0.2,D0.2.1,其中对顺序的标注方法仅为示
例,可在每个节点被调用时即将代表顺序拓扑的数字记录在日志中,例如日
志中,记录代表本次调用的字段为X,X字段后面的若干字段记录表示服务
节点调用顺序和拓扑的数字和点,从而根据日志中的服务调用记录进行服务
调用链路的获取。获取包含被调用时所涉及的服务节点及其调用顺序的服务
调用链可以清晰显示服务调用的过程,并获得每次服务调用的拓扑及其特点。
本领域技术人员应能理解上述获取服务调用链以及标注服务调用链的
方式仅为举例,其他现有的或今后可能出现的获取服务调用链以及标注服
务调用链的方式如可适用于本申请,也应包含在本申请保护范围以内,并
在此以引用方式包含于此。
接着,在步骤S2中设备1根据所述服务调用链构建对应的服务调用模型。
其中,所述服务调用模型是指根据所述服务调用链的拓扑结构而构建的具有
相同节点调用顺序的服务调用链,例如在获取的服务调用链的样本足够大的
情况下,在同一服务提供商的平台或应用系统中会出现相同的服务调用链,
例如在一天之中全国用户中有三万次的服务调用均涉及图9中所示的服务节
点,且其调用顺序和拓扑均相同,则这三万次服务调用对应一个相同的服务
调用模型即为上文举例的A0,B0.1,C0.2,D0.2.1,将若干具有相同拓扑和
顺序服务节点调用的服务调用链概括为一个服务调用模型即为构建过程。构
建所述服务调用链对应的服务调用模型使得基于大数据样本的对服务调用链
的分析更加清晰,且所构建的模型可以代表一种服务调用,从而便于后续基
于此对每个模型中的数据进行分析。
接着,在步骤S3中设备1根据所述服务调用模型处理所述服务调用链。
是指根据服务调用模型对与服务调用模型具有相同服务节点调用以及拓扑顺
序的服务调用链数据进行分析,每个服务节点的调用数据例如每个节点的调
用的完成时间、调用的成功与否等在不同的情况下会有差别,但在数据样本
足够大的情况下可以观察到每个服务节点的调用规律,例如某服务节点的调
用时间正常在0.1秒内完成,又例如某个服务节点的反馈信息正常会出现十
次以内的调用失败,则基于服务调用模型以及具有相同服务节点调用以及拓
扑顺序的服务调用链数据所分析的调用规律可以用来监控所述分布系统中的
调用是否正常,以及问题定位,例如接上文举例某服务节点的调用时间正常
在0.1秒内完成,在某一个时段100次调用中该服务节点的调用时间有50次
以上均超过0.1秒十倍以上,则可以检测到所述服务节点的调用存在问题。
本领域技术人员应能理解上述处理服务调用链的方式仅为举例,其他
现有的或今后可能出现的处理服务调用链的方式如可适用于本申请,也应
包含在本申请保护范围以内,并在此以引用方式包含于此。
图2示出根据本申请另一个优选实例的一种用于处理服务调用信息的
方法中步骤S1流程图。所述步骤S1包括步骤S11以及步骤S12。
其中,在步骤S11中设备1获取分布式系统中的服务调用日志信息;在
步骤S12中设备1从所述服务调用日志信息中抽取一个或多个服务调用链,
其中,每个服务调用链包括被顺序调用的一个或多个服务节点。
具体地,在步骤S11中设备1获取分布式系统中的服务调用日志信息。
其中,所述服务调用日志信息记载每个服务节点每次被调用的标记、顺序信
息以及其它可以确定每次服务调用中顺序以及拓扑的信息。例如,因为一个
节点在某个时间范围内不止被调用一次,因此,若按照调用顺序如上文举例
在图9所示的服务调用中对节点标记D0.2.1,有一定的几率会在两次或以上
的被调用过程中都是由起始点调用,再调用第1个服务节点后在第2个服务
节点后被调用而被标记为0.2.1,因此,需要在每个节点被调用时即对每次
服务调用进行标记并记录在日志中,例如日志中,记录代表图9中所示的调
用的字段为X,即X代表某次由A入口到D完成的服务调用标记为X,从而
在获取日志信息时读取标记调用的字段。又例如,接上文举例在每个节点被
调用时即将代表顺序拓扑的数字记录在日志中,从而在获取日志信息时读取
标示服务调用链中服务节点被调用顺序和拓扑的字段。获取上述服务调用的
日志信息,可以对服务调用中的节点进行关联,从而获得服务调用链。
本领域技术人员应能理解上述记载服务调用日志的方式仅为举例,其
他现有的或今后可能出现的记载服务调用日志的方式如可适用于本申请,
也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S12中设备1从所述服务调用日志信息中抽取一个或多
个服务调用链,其中,每个服务调用链包括被顺序调用的一个或多个服务
节点。即根据日志信息中所记载的每个服务节点每次被调用的标记、顺序
信息以及其它可以确定每次服务调用中顺序以及拓扑的信息,以每次服务
调用为单位抽取相关的被调用的顺序以及拓扑信息并关联,从而生成每次
服务调用的服务调用链。例如,所获取的调用日志信息为:
“alipay,com.alipay.chashier.xxx,0x0boc123,0.2.1,AE001…”对这条日志按
逗号来分隔,第一个字段是系统名alipay,第二个字段是接口方法,第三
个字段是代表一次服务调用的标记,第四个字段是调用时的顺序和拓扑,
第五个字段是代表调用执行结果的返回码“AE001”,后面可能带更多字段
用“…”进行省略,即根据记录服务调用的标记,对所有日志中的第三个
字段进行搜索,将所有含有“0x0boc123”的服务调用节点进行搜索,并
将搜索到的日志记录所对应的节点按照按上文举例的标记方法所记录的
第四个字段所记载的字段进行调用顺序和拓扑的排序,最终形成例如A0,
B0.1,C0.2,D0.2.1格式的服务调用链。
本领域技术人员应能理解上述从日志信息中抽取服务调用链的方式
仅为举例,其他现有的或今后可能出现的从日志信息中抽取服务调用链的
方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用
方式包含于此。
优选地,在步骤S12中设备1通过对所述服务调用链进行聚合处理构建
对应的服务调用模型,其中,所述服务调用模型包括一个或多个服务调用拓
扑,每个服务调用拓扑由一个或多个所述服务调用链聚合处理而得。所述服
务调用模型均包括相同的服务调用拓扑,即由具有相同服务调用拓扑的服务
调用链聚合而成。例如,接上文举例在所获取的服务调用链中有三万个服务
调用链为A0,B0.1,C0.2,D0.2.1,有两万个服务调用链为A0,B0.1,C0.2,
有一个服务调用链为A 0,B0.1,则可将三万个服务调用链聚合为一个服务调
用模型001,将两万个服务调用链聚合为一个服务调用模型002,将一个服务
调用链单独列为一个服务调用模型003。即所述服务调用模型为所有包含相
同服务节点以及服务节点调用拓扑和顺序的服务调用链的代表,从而可以以
所述服务调用模型对服务调用链中的服务节点调用数据进行分析和监控。
其中,在步骤S3中设备1根据所述服务调用拓扑处理对应的所述服务调
用链。即将聚合所得的服务调用模型中的服务调用拓扑为基础对与其具有相
同服务调用拓扑的服务调用链路进行数据分析,接上文举例,以A0,B0.1,
C0.2,D0.2.1的服务调用模型对所有三万个服务调用链中的每个服务节点的
数据进行分析,例如分析得出其中一个服务调用节点的调用显示错误的概率
在每小时万分之一,继而根据这一分析结果对其它与所述服务调用模型具有
相同服务调用拓扑的服务调用链路进行监控,从而当这一服务调用节点显示
错误概率在每小时万分之一以上时,即进行报错。因此,根据所述服务调用
拓扑对所述服务调用链进行处理,使得在数据样本较大情况下有效对系统进
行监控,提升系统的预警性能和稳定性。
优选地,所述设备还包括步骤S4(未示出),在步骤S4中设备1对所述
服务调用拓扑执行清洗操作。其中,所述清洗操作就是过滤掉不重要的调用
对象信息。接上文举例有与图9所示的服务链路全部调用节点拓扑相同的两
个服务调用,其中一个服务节点C在调用时会额外还会查询一些信息,例如
在第1个服务调用链路中查询了缓存C1,未获取后又查询了一次数据库C2,
后又将数据放至缓存C3,而在第2个服务调用链路中直接查询缓存C1就获
取到了。其中,按清洗操作前的情况可能就是两个不同的链路,即C还会调
用C1,C2,C3节点这些,因为这些查询的节点出错后通常在一个系统内进行,
且不会反馈执行结果,其调用结果通常会反馈到C节点上,因此可以清洗忽
略掉,除此外还有中间件路由查询的节点等都是对模型没影响的都可以清洗
掉,从而突出关键服务节点的调用情况,使得服务调用拓扑更加准确。
本领域技术人员应能理解上述清洗服务调用拓扑的方式仅为举例,其
他现有的或今后可能出现的清洗服务调用拓扑的方式如可适用于本申请,
也应包含在本申请保护范围以内,并在此以引用方式包含于此。
进一步地,在步骤S3中设备1根据清洗后的所述服务调用拓扑处理对应
的所述服务调用链。即将清洗操作后的具有相同服务调拓扑的服务调用链依
据其日志信息进行聚合,从而构建服务调用模型,具体地聚合与构建方式与
上文中所述方法的相同。
更优选地,其中,所述清洗操作包括以下至少任一项:
删除所述服务调用拓扑中的预定服务节点,即将所调用的不属于远程服
务的服务节点例如中间件服务节点路由查询的调用节点等进行过滤。
删除所述服务调用拓扑中的未反馈调用结果信息的服务节点,即所调用
的操作在系统内进行且无执行结果反馈的服务调用结果进行过滤,例如查询
和调用缓存、调用数据库等。
删除所述服务调用拓扑中的偶用服务节点,其中,所述偶用服务节点在
所述服务调用拓扑对应的所述服务调用链中累计出现次数小于或等于预定的
偶用阈值信息,即通过设置一定的被调用次数的阈值,通过读取日志信息或
其它历史记录信息中的调用次数,将正常在完成某个完整的服务调用链的时
很少使用或极偶然的情况下才会使用的服务节点进行删除,以减轻系统对数
据分析处理时的负担,同时会获得更加准备的服务调用模型以及数据。
删除所述服务调用拓扑中的偶用服务节点,其中,所述偶用服务节点在
所述服务调用拓扑对应的所述服务调用链中累计出现次数小于或等于预定的
偶用阈值信息,所述服务调用拓扑中除所述偶用服务节点外的其他服务节点
在所述服务调用拓扑对应的所述服务调用链中累计出现次数大于或等于预定
的常用阈值信息,即即通过设置一定的被调用次数的阈值,通过读取日志信
息或其它历史记录信息中的调用次数,将主要的或需要重点维护的调用服务
节点筛选出来而将其它不经常调用的服务节点删除,从而有针对性的进行数
据分析和监控。
优选地,在步骤S2中设备1结合所述服务调用链中服务节点的调用反馈
信息,对所述服务调用链进行聚合处理,以构建对应的服务调用模型,其中,
所述服务调用模型包括一个或多个服务调用拓扑,每个服务调用拓扑由一个
或多个所述服务调用链聚合处理而得。其中,所述调用反馈信息是指每个服
务节点被调用后的返回节点以代表所述服务节点的执行结果,所述调用反馈
信息包含一定的执行结果不同情况的根据一定预置规则形成可辨识信息,例
如执行成功或是失败以及一定的业务场景,图9所示的服务调用链路中B节
点调用成功则反馈SUCC,调用D节点调用反馈信息AE00,C节点的调用反
馈信息AE01,A节点的调用反馈信息AE10,代表A节点的调用需要在调用
B成功后执行C节点,而C节点的调用需要先执行D节点的调用,所述调用
反馈信息可记录到日志中,从而可以在调取服务节点某次调用拓扑信息时一
并查询,每个服务节点对应若干调用反馈信息,且通常服务调用链路末端的
调用反馈信息会影响到服务调用链路前端的调用反馈信息,但在服务调用链
路前端可能会作聚合,例如图9所示的A服务节点返回系统异常,可能是因
为C服务节点或者是D服务节点网络不通,也可能是数据库异常,故而每个
服务调用链路都是调用反馈信息的组合。因此具有相同拓扑的服务调用链路
在聚合构建服务调用模型时,不同的服务调用链路为了能清晰定位问题,链
路中会记录所有的调用反馈信息组合并用于后续的基于服务调用模型的数据
分析。
本领域技术人员应能理解上述调用反馈信息的记录和展现方式仅为举
例,其他现有的或今后可能出现的调用反馈信息的记录和展现方式如可适
用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于
此。
图3示出根据本申请又一个优选实例的一种用于处理服务调用信息的
方法中步骤S3流程图。包括步骤S31以及步骤S32。
其中,在步骤S31中设备1对于所述服务调用拓扑所对应的一个或多个
所述服务调用链,根据每个所述服务调用链中服务节点的调用反馈信息进行
统计处理;在步骤S32中设备1根据对应的统计结果监控处理所述服务调用
拓扑所对应的所述服务调用链。
具体地,在步骤S31中设备1对于所述服务调用拓扑所对应的一个或多
个所述服务调用链,根据每个所述服务调用链中服务节点的调用反馈信息进
行统计处理。即对服务调用模型所对应的所有具有相同服务调用拓扑的服务
调用链中的调用反馈信息进行分析和统计,例如根据服务调用链路所生成服
务调用模型的拓扑关系,将具有相同服务调用拓扑的服务调用链路均打上服
务调用模型的标记,即每个服务调用模型具有一个特定的标记,并结合所述
标记与每个服务调用链路中的调用反馈信息组合给每个服务调用链路赋予唯
一的标记,进而统计服务调用链路中的调用反馈信息对每个服务调用链路中
的服务节点的调用反馈信息情况依照固定时间环比或同比进行统一的分析。
本领域技术人员应能理解上述分析调用反馈信息进行数据分析的方式
仅为举例,其他现有的或今后可能出现的分析调用反馈信息进行数据分析
的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引
用方式包含于此。
接着,在步骤S32中设备1根据对应的统计结果监控处理所述服务调用
拓扑所对应的所述服务调用链。即在数据样本足够大的情况下对服务调用拓
扑中相同节点的调用反馈信息进行按固定时间进行比较,并监控数据,例如
数据在百分之九十五以上的统计样本中为正常状态,则一旦系统中出现百分
之五的异常情况即会被系统监控到,因为调用反馈信息是每个服务调用节点
均有因此可以监控到异常情况后定位到具体服务调用模型所对应的服务链
路,接上文举例根据每个服务链路所对应的唯一标记定位至具体的服务链路
及其调用的服务节点上。
本领域技术人员应能理解上述根据分析结果监控服务调用的方式仅为
举例,其他现有的或今后可能出现的根据分析结果监控服务调用的方式如
可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包
含于此。
图4示出根据本申请再一个优选实例的一种用于处理服务调用信息的
方法中步骤S32流程图。包括步骤S321以及步骤S322。
其中,在步骤S321中设备1基于预定的时段比对规则,将对应的统计
结果与所述服务调用拓扑所对应的所述服务调用链中各服务节点的调用反馈
信息相比较;在步骤S322中设备1当存在比较差值超过预定的波动阈值信
息时,生成关于所述比较差值对应的所述服务调用链的报警信息,其中,所
述报警信息定位于所述比较差值对应的服务节点。
具体地,在步骤S321中设备1基于预定的时段比对规则,将对应的统
计结果与所述服务调用拓扑所对应的所述服务调用链中各服务节点的调用反
馈信息相比较。即按照一定的时间比较规则基于相同的服务调用拓扑对所有
服务调用链路的调用反馈信息进行分析,例如具有同一服务调用拓扑的服务
调用链路上午8点至9点的数据与上午9点至10点的调用反馈信息进行环比
分析,又例如具有同一服务调用拓扑的服务调用链路3月2日上午8点至9
点的数据与3月3日上午8点至9点的调用反馈信息进行同比分析,从而可
获得不同场景的正常运行的数据区间,例如在每天支付失败的概率是已完毕
支付有一百次出现余额不足的情况,进而根据这些分析结果对系统中的服务
调用的状态进行监控。
本领域技术人员应能理解上述获得和比较统计结果的方式仅为举例,
其他现有的或今后可能出现的获得和比较统计结果的方式如可适用于本
申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,在步骤S322中设备1当存在比较差值超过预定的波动阈值信息
时,生成关于所述比较差值对应的所述服务调用链的报警信息,其中,所述
报警信息定位于所述比较差值对应的服务节点。是指根据调用反馈信息对有
相同拓扑服务模型的服务调用链进行分析后,依据获得不同场景的正常运行
的数据区间对日常运行中的具有相同拓扑的服务调用链路数据进行监控,并
对所述正常区间的情况设置一定的阈值,例如接上文举例每天支付失败的概
率是已完毕支付有一百次出现余额不足的情况,则设置检查余额的服务节点
错误的反馈次数的阈值为小于等于一百次或一百二十次,则当系统中每天检
查余额的服务节点错误的反馈次数查过所设置的阈值后则进行报警,并根服
务调用链路的信息与调用反馈信息所构成的全局唯一标记追踪至出错节点。
本领域技术人员应能理解上述监控和预警的方式仅为举例,其他现有
的或今后可能出现的监控和预警的方式如可适用于本申请,也应包含在本
申请保护范围以内,并在此以引用方式包含于此。
图5示出根据本申请另一个方面的一种用于处理服务调用信息的设备
示意图。所述设备1包括服务调用链获取装置11,服务调用模型构建装置
12以及处理装置13。
其中,所述设备1中服务调用链获取装置11获取分布式服务系统中的一
个或多个服务调用链,其中,每个服务调用链包括被顺序调用的一个或多个
服务节点;服务调用模型构建装置12根据所述服务调用链构建对应的服务调
用模型;处理装置13根据所述服务调用模型处理所述服务调用链。
具体地,服务调用链获取装置11获取分布式服务系统中的一个或多个
服务调用链,其中,每个服务调用链包括被顺序调用的一个或多个服务节点。
在此,所述分布式服务系统包括但不限于面向服务架构或构建在分布式系统
上的软件系统。其中,所述服务节点包括但不限于所述分布式服务系统中供
调用的一项服务或一项功能,如在电商平台进行产品消费时的服务节点包括
调用用户名,调用用户关联账户,调取支付页面,获取安全验证,检验账户
余额等。所述服务调用链是指在所述分布式服务系统中所完成一次服务调用
所涉及的服务节点及其顺序,例如图9所示的服务调用示意图是以A服务节
点为入口的一个服务调用链,其中用圆圈标示的A、B、C、D均指代一个服
务节点,所示意的服务调用链的入口为服务节点A,而完成A需要先调用B
再调用C,又完成C需要调用D,因此图9中所示的服务调用中的服务调用
链中的服务调用节点是有调用顺序的,即所示的服务调用链的调用顺序为A
→B→C→D,其中,为了便于计算机语言进行识别图9中所示的服务调用链
中服务节点的调用顺序可以根据服务节点的被调用顺序将初始的入口节点的
顺序标为A0,接着调用的B标为B0.1即0代表A“.”号后面为接在A后面
调用的第1个服务节点,接着调用C标为C0.2即0代表A“.”号后面为接
在A后面调用的第2个服务节点,接着为了完成C需要调用的D可知D是
为了完成C所调用的,因此D标为D0.2.1即0代表A“.”号后面2代表C
再“.”号后面1代表为C后面调用的第1个节点,因此,图9中的拓扑图表
示的调用链路即可表示为A0,B0.1,C0.2,D0.2.1,其中对顺序的标注方法
仅为示例,可在每个节点被调用时即将代表顺序拓扑的数字记录在日志中,
例如日志中,记录代表本次调用的字段为X,X字段后面的若干字段记录表
示服务节点调用顺序和拓扑的数字和点,从而根据日志中的服务调用记录进
行服务调用链路的获取。获取包含被调用时所涉及的服务节点及其调用顺序
的服务调用链可以清晰显示服务调用的过程,并获得每次服务调用的拓扑及
其特点。
本领域技术人员应能理解上述获取服务调用链以及标注服务调用链的
方式仅为举例,其他现有的或今后可能出现的获取服务调用链以及标注服
务调用链的方式如可适用于本申请,也应包含在本申请保护范围以内,并
在此以引用方式包含于此。
接着,服务调用模型构建装置12根据所述服务调用链构建对应的服务调
用模型。其中,所述服务调用模型是指根据所述服务调用链的拓扑结构而构
建的具有相同节点调用顺序的服务调用链,例如在获取的服务调用链的样本
足够大的情况下,在同一服务提供商的平台或应用系统中会出现相同的服务
调用链,例如在一天之中全国用户中有三万次的服务调用均涉及图9中所示
的服务节点,且其调用顺序和拓扑均相同,则这三万次服务调用对应一个相
同的服务调用模型即为上文举例的A0,B0.1,C0.2,D0.2.1,将若干具有相
同拓扑和顺序服务节点调用的服务调用链概括为一个服务调用模型即为构建
过程。构建所述服务调用链对应的服务调用模型使得基于大数据样本的对服
务调用链的分析更加清晰,且所构建的模型可以代表一种服务调用,从而便
于后续基于此对每个模型中的数据进行分析。
接着,处理装置13根据所述服务调用模型处理所述服务调用链。是指根
据服务调用模型对与服务调用模型具有相同服务节点调用以及拓扑顺序的服
务调用链数据进行分析,每个服务节点的调用数据例如每个节点的调用的完
成时间、调用的成功与否等在不同的情况下会有差别,但在数据样本足够大
的情况下可以观察到每个服务节点的调用规律,例如某服务节点的调用时间
正常在0.1秒内完成,又例如某个服务节点的反馈信息正常会出现十次以内
的调用失败,则基于服务调用模型以及具有相同服务节点调用以及拓扑顺序
的服务调用链数据所分析的调用规律可以用来监控所述分布系统中的调用是
否正常,以及问题定位,例如接上文举例某服务节点的调用时间正常在0.1
秒内完成,在某一个时段100次调用中该服务节点的调用时间有50次以上均
超过0.1秒十倍以上,则可以检测到所述服务节点的调用存在问题。
本领域技术人员应能理解上述处理服务调用链的方式仅为举例,其他
现有的或今后可能出现的处理服务调用链的方式如可适用于本申请,也应
包含在本申请保护范围以内,并在此以引用方式包含于此。
图6示出根据本申请另一个优选实例的一种用于处理服务调用信息的
设备中服务调用链获取装置示意图。所述服务调用链获取装置11包括调
用信息获取单元111以及服务调用链生成单元112。
其中,所述调用信息获取单元111获取分布式系统中的服务调用日志信
息;服务调用链生成单元112从所述服务调用日志信息中抽取一个或多个服
务调用链,其中,每个服务调用链包括被顺序调用的一个或多个服务节点。
具体地,所述调用信息获取单元111获取分布式系统中的服务调用日志
信息。其中,所述服务调用日志信息记载每个服务节点每次被调用的标记、
顺序信息以及其它可以确定每次服务调用中顺序以及拓扑的信息。例如,因
为一个节点在某个时间范围内不止被调用一次,因此,若按照调用顺序如上
文举例在图9所示的服务调用中对节点标记D0.2.1,有一定的几率会在两次
或以上的被调用过程中都是由起始点调用,再调用第1个服务节点后在第2
个服务节点后被调用而被标记为0.2.1,因此,需要在每个节点被调用时即对
每次服务调用进行标记并记录在日志中,例如日志中,记录代表图9中所示
的调用的字段为X,即X代表某次由A入口到D完成的服务调用标记为X,
从而在获取日志信息时读取标记调用的字段。又例如,接上文举例在每个节
点被调用时即将代表顺序拓扑的数字记录在日志中,从而在获取日志信息时
读取标示服务调用链中服务节点被调用顺序和拓扑的字段。获取上述服务调
用的日志信息,可以对服务调用中的节点进行关联,从而获得服务调用链。
本领域技术人员应能理解上述记载服务调用日志的方式仅为举例,其
他现有的或今后可能出现的记载服务调用日志的方式如可适用于本申请,
也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,服务调用链生成单元112从所述服务调用日志信息中抽取一个
或多个服务调用链,其中,每个服务调用链包括被顺序调用的一个或多个
服务节点。即根据日志信息中所记载的每个服务节点每次被调用的标记、
顺序信息以及其它可以确定每次服务调用中顺序以及拓扑的信息,以每次
服务调用为单位抽取相关的被调用的顺序以及拓扑信息并关联,从而生成
每次服务调用的服务调用链。例如,所获取的调用日志信息为:
“alipay,com.alipay.chashier.xxx,0x0boc123,0.2.1,AE001…”对这条日志按
逗号来分隔,第一个字段是系统名alipay,第二个字段是接口方法,第三
个字段是代表一次服务调用的标记,第四个字段是调用时的顺序和拓扑,
第五个字段是代表调用执行结果的返回码“AE001”,后面可能带更多字段
用“…”进行省略,即根据记录服务调用的标记,对所有日志中的第三个
字段进行搜索,将所有含有“0x0boc123”的服务调用节点进行搜索,并
将搜索到的日志记录所对应的节点按照按上文举例的标记方法所记录的
第四个字段所记载的字段进行调用顺序和拓扑的排序,最终形成例如A0,
B0.1,C0.2,D0.2.1格式的服务调用链。
本领域技术人员应能理解上述从日志信息中抽取服务调用链的方式
仅为举例,其他现有的或今后可能出现的从日志信息中抽取服务调用链的
方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引用
方式包含于此。
优选地,所述服务调用模型构建装置12通过对所述服务调用链进行聚合
处理构建对应的服务调用模型,其中,所述服务调用模型包括一个或多个服
务调用拓扑,每个服务调用拓扑由一个或多个所述服务调用链聚合处理而得。
所述服务调用模型均包括相同的服务调用拓扑,即由具有相同服务调用拓扑
的服务调用链聚合而成。例如,接上文举例在所获取的服务调用链中有三万
个服务调用链为A0,B0.1,C0.2,D0.2.1,有两万个服务调用链为A0,B0.1,
C0.2,有一个服务调用链为A 0,B0.1,则可将三万个服务调用链聚合为一个
服务调用模型001,将两万个服务调用链聚合为一个服务调用模型002,将一
个服务调用链单独列为一个服务调用模型003。即所述服务调用模型为所有
包含相同服务节点以及服务节点调用拓扑和顺序的服务调用链的代表,从而
可以以所述服务调用模型对服务调用链中的服务节点调用数据进行分析和监
控。
其中,所述处理装置13根据所述服务调用拓扑处理对应的所述服务调用
链。即将聚合所得的服务调用模型中的服务调用拓扑为基础对与其具有相同
服务调用拓扑的服务调用链路进行数据分析,接上文举例,以A0,B0.1,C0.2,
D0.2.1的服务调用模型对所有三万个服务调用链中的每个服务节点的数据进
行分析,例如分析得出其中一个服务调用节点的调用显示错误的概率在每小
时万分之一,继而根据这一分析结果对其它与所述服务调用模型具有相同服
务调用拓扑的服务调用链路进行监控,从而当这一服务调用节点显示错误概
率在每小时万分之一以上时,即进行报错。因此,根据所述服务调用拓扑对
所述服务调用链进行处理,使得在数据样本较大情况下有效对系统进行监控,
提升系统的预警性能和稳定性。
优选地,所述设备还包括清洗装置14(未示出),所述清洗装置14对所
述服务调用拓扑执行清洗操作。其中,所述清洗操作就是过滤掉不重要的调
用对象信息。接上文举例有与图9所示的服务链路全部调用节点拓扑相同的
两个服务调用,其中一个服务节点C在调用时会额外还会查询一些信息,例
如在第1个服务调用链路中查询了缓存C1,未获取后又查询了一次数据库
C2,后又将数据放至缓存C3,而在第2个服务调用链路中直接查询缓存C1
就获取到了。其中,按清洗操作前的情况可能就是两个不同的链路,即C还
会调用C1,C2,C3节点这些,因为这些查询的节点出错后通常在一个系统内进
行,且不会反馈执行结果,其调用结果通常会反馈到C节点上,因此可以清
洗忽略掉,除此外还有中间件路由查询的节点等都是对模型没影响的都可以
清洗掉,从而突出关键服务节点的调用情况,使得服务调用拓扑更加准确。
本领域技术人员应能理解上述清洗服务调用拓扑的方式仅为举例,其
他现有的或今后可能出现的清洗服务调用拓扑的方式如可适用于本申请,
也应包含在本申请保护范围以内,并在此以引用方式包含于此。
进一步地,所述处理装置13根据清洗后的所述服务调用拓扑处理对应的
所述服务调用链。即将清洗操作后的具有相同服务调拓扑的服务调用链依据
其日志信息进行聚合,从而构建服务调用模型,具体地聚合与构建方式与上
文中所述方法的相同。
更优选地,其中,所述清洗操作包括以下至少任一项:
删除所述服务调用拓扑中的预定服务节点,即将所调用的例如中间件服
务节点路由查询的调用节点等进行过滤。
删除所述服务调用拓扑中的未反馈调用结果信息的服务节点,即所调用
的操作在系统内进行且无执行结果反馈的服务调用结果进行过滤,例如查询
和调用缓存、调用数据库等。
删除所述服务调用拓扑中的偶用服务节点,其中,所述偶用服务节点在
所述服务调用拓扑对应的所述服务调用链中累计出现次数小于或等于预定的
偶用阈值信息,即通过设置一定的被调用次数的阈值,通过读取日志信息或
其它历史记录信息中的调用次数,将正常在完成某个完整的服务调用链的时
很少使用或极偶然的情况下才会使用的服务节点进行删除,以减轻系统对数
据分析处理时的负担,同时会获得更加准备的服务调用模型以及数据。
删除所述服务调用拓扑中的偶用服务节点,其中,所述偶用服务节点在
所述服务调用拓扑对应的所述服务调用链中累计出现次数小于或等于预定的
偶用阈值信息,所述服务调用拓扑中除所述偶用服务节点外的其他服务节点
在所述服务调用拓扑对应的所述服务调用链中累计出现次数大于或等于预定
的常用阈值信息,即即通过设置一定的被调用次数的阈值,通过读取日志信
息或其它历史记录信息中的调用次数,将主要的或需要重点维护的调用服务
节点筛选出来而将其它不经常调用的服务节点删除,从而有针对性的进行数
据分析和监控。
优选地,所述服务调用模型构建装置12结合所述服务调用链中服务节点
的调用反馈信息,对所述服务调用链进行聚合处理,以构建对应的服务调用
模型,其中,所述服务调用模型包括一个或多个服务调用拓扑,每个服务调
用拓扑由一个或多个所述服务调用链聚合处理而得。其中,所述调用反馈信
息是指每个服务节点被调用后的返回节点以代表所述服务节点的执行结果,
所述调用反馈信息包含一定的执行结果不同情况的根据一定预置规则形成可
辨识信息,例如执行成功或是失败以及一定的业务场景,图9所示的服务调
用链路中B节点调用成功则反馈SUCC,调用D节点调用反馈信息AE00,C
节点的调用反馈信息AE01,A节点的调用反馈信息AE10,代表A节点的调
用需要在调用B成功后执行C节点,而C节点的调用需要先执行D节点的
调用,所述调用反馈信息可记录到日志中,从而可以在调取服务节点某次调
用拓扑信息时一并查询,每个服务节点对应若干调用反馈信息,且通常服务
调用链路末端的调用反馈信息会影响到服务调用链路前端的调用反馈信息,
但在服务调用链路前端可能会作聚合,例如图9所示的A服务节点返回系统
异常,可能是因为C服务节点或者是D服务节点网络不通,也可能是数据库
异常,故而每个服务调用链路都是调用反馈信息的组合。因此具有相同拓扑
的服务调用链路在聚合构建服务调用模型时,不同的服务调用链路为了能清
晰定位问题,链路中会记录所有的调用反馈信息组合并用于后续的基于服务
调用模型的数据分析。
本领域技术人员应能理解上述调用反馈信息的记录和展现方式仅为举
例,其他现有的或今后可能出现的调用反馈信息的记录和展现方式如可适
用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包含于
此。
图7示出根据本申请又一个优选实例的一种用于处理服务调用信息的
设备中处理装置示意图。所述处理装置13包括信息分析单元131以及监控
单元132。
其中,信息分析单元131对于所述服务调用拓扑所对应的一个或多个所
述服务调用链,根据每个所述服务调用链中服务节点的调用反馈信息进行统
计处理;监控单元132根据对应的统计结果监控处理所述服务调用拓扑所对
应的所述服务调用链。
具体地,信息分析单元131对于所述服务调用拓扑所对应的一个或多个
所述服务调用链,根据每个所述服务调用链中服务节点的调用反馈信息进行
统计处理。即对服务调用模型所对应的所有具有相同服务调用拓扑的服务调
用链中的调用反馈信息进行分析和统计,例如根据服务调用链路所生成服务
调用模型的拓扑关系,将具有相同服务调用拓扑的服务调用链路均打上服务
调用模型的标记,即每个服务调用模型具有一个特定的标记,并结合所述标
记与每个服务调用链路中的调用反馈信息组合给每个服务调用链路赋予唯一
的标记,进而统计服务调用链路中的调用反馈信息对每个服务调用链路中的
服务节点的调用反馈信息情况依照固定时间环比或同比进行统一的分析。
本领域技术人员应能理解上述分析调用反馈信息进行数据分析的方式
仅为举例,其他现有的或今后可能出现的分析调用反馈信息进行数据分析
的方式如可适用于本申请,也应包含在本申请保护范围以内,并在此以引
用方式包含于此。
接着,监控单元132根据对应的统计结果监控处理所述服务调用拓扑所
对应的所述服务调用链。即在数据样本足够大的情况下对服务调用拓扑中相
同节点的调用反馈信息进行按固定时间进行比较,并监控数据,例如数据在
百分之九十五以上的统计样本中为正常状态,则一旦系统中出现百分之五的
异常情况即会被系统监控到,因为调用反馈信息是每个服务调用节点均有因
此可以监控到异常情况后定位到具体服务调用模型所对应的服务链路,接上
文举例根据每个服务链路所对应的唯一标记定位至具体的服务链路及其调用
的服务节点上。
本领域技术人员应能理解上述根据分析结果监控服务调用的方式仅为
举例,其他现有的或今后可能出现的根据分析结果监控服务调用的方式如
可适用于本申请,也应包含在本申请保护范围以内,并在此以引用方式包
含于此。
图8示出根据本申请再一个优选实例的一种用于处理服务调用信息的
设备中监控单元示意图。所述监控单元132包括比较子单元1321以及报警
子单元1322。
其中,比较子单元1321基于预定的时段比对规则,将对应的统计结果与
所述服务调用拓扑所对应的所述服务调用链中各服务节点的调用反馈信息相
比较;报警子单元1322当存在比较差值超过预定的波动阈值信息时,生成关
于所述比较差值对应的所述服务调用链的报警信息,其中,所述报警信息定
位于所述比较差值对应的服务节点。
具体地,比较子单元1321基于预定的时段比对规则,将对应的统计结果
与所述服务调用拓扑所对应的所述服务调用链中各服务节点的调用反馈信息
相比较。即按照一定的时间比较规则基于相同的服务调用拓扑对所有服务调
用链路的调用反馈信息进行分析,例如具有同一服务调用拓扑的服务调用链
路上午8点至9点的数据与上午9点至10点的调用反馈信息进行环比分析,
又例如具有同一服务调用拓扑的服务调用链路3月2日上午8点至9点的数
据与3月3日上午8点至9点的调用反馈信息进行同比分析,从而可获得不
同场景的正常运行的数据区间,例如在每天支付失败的概率是已完毕支付有
一百次出现余额不足的情况,进而根据这些分析结果对系统中的服务调用的
状态进行监控。
本领域技术人员应能理解上述获得和比较统计结果的方式仅为举例,
其他现有的或今后可能出现的获得和比较统计结果的方式如可适用于本
申请,也应包含在本申请保护范围以内,并在此以引用方式包含于此。
接着,报警子单元1322当存在比较差值超过预定的波动阈值信息时,生
成关于所述比较差值对应的所述服务调用链的报警信息,其中,所述报警信
息定位于所述比较差值对应的服务节点。是指根据调用反馈信息对有相同拓
扑服务模型的服务调用链进行分析后,依据获得不同场景的正常运行的数据
区间对日常运行中的具有相同拓扑的服务调用链路数据进行监控,并对所述
正常区间的情况设置一定的阈值,例如接上文举例每天支付失败的概率是已
完毕支付有一百次出现余额不足的情况,则设置检查余额的服务节点错误的
反馈次数的阈值为小于等于一百次或一百二十次,则当系统中每天检查余额
的服务节点错误的反馈次数查过所设置的阈值后则进行报警,并根服务调用
链路的信息与调用反馈信息所构成的全局唯一标记追踪至出错节点。
本领域技术人员应能理解上述监控和预警的方式仅为举例,其他现有
的或今后可能出现的监控和预警的方式如可适用于本申请,也应包含在本
申请保护范围以内,并在此以引用方式包含于此。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离
本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权
利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在
内。
需要注意的是,本申请可在软件和/或软件与硬件的组合体中被实施,
例如,可采用专用集成电路(ASIC)、通用目的计算机或任何其他类似硬
件设备来实现。在一个实施例中,本申请的软件程序可以通过处理器执行
以实现上文所述步骤或功能。同样地,本申请的软件程序(包括相关的数
据结构)可以被存储到计算机可读记录介质中,例如,RAM存储器,磁
或光驱动器或软磁盘及类似设备。另外,本申请的一些步骤或功能可采用
硬件来实现,例如,作为与处理器配合从而执行各个步骤或功能的电路。
另外,本申请的一部分可被应用为计算机程序产品,例如计算机程序
指令,当其被计算机执行时,通过该计算机的操作,可以调用或提供根据
本申请的方法和/或技术方案。而调用本申请的方法的程序指令,可能被存
储在固定的或可移动的记录介质中,和/或通过广播或其他信号承载媒体中
的数据流而被传输,和/或被存储在根据所述程序指令运行的计算机设备的
工作存储器中。在此,根据本申请的一个实施例包括一个装置,该装置包
括用于存储计算机程序指令的存储器和用于执行程序指令的处理器,其
中,当该计算机程序指令被该处理器执行时,触发该装置运行基于前述根
据本申请的多个实施例的方法和/或技术方案。
对于本领域技术人员而言,显然本申请不限于上述示范性实施例的细
节,而且在不背离本申请的精神或基本特征的情况下,能够以其他的具体
形式实现本申请。因此,无论从哪一点来看,均应将实施例看作是示范性
的,而且是非限制性的,本申请的范围由所附权利要求而不是上述说明限
定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括
在本申请内。不应将权利要求中的任何附图标记视为限制所涉及的权利要
求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。
装置权利要求中陈述的多个单元或装置也可以由一个单元或装置通过软
件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特
定的顺序。