CN107870762B - Soa调用链路跟踪的方法、装置及系统 - Google Patents
Soa调用链路跟踪的方法、装置及系统 Download PDFInfo
- Publication number
- CN107870762B CN107870762B CN201610859017.1A CN201610859017A CN107870762B CN 107870762 B CN107870762 B CN 107870762B CN 201610859017 A CN201610859017 A CN 201610859017A CN 107870762 B CN107870762 B CN 107870762B
- Authority
- CN
- China
- Prior art keywords
- soa
- calling
- tracking data
- link
- link tracking
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 135
- 230000008569 process Effects 0.000 claims abstract description 38
- 230000001360 synchronised effect Effects 0.000 claims abstract description 17
- 230000000903 blocking effect Effects 0.000 claims description 28
- 230000002159 abnormal effect Effects 0.000 claims description 23
- 238000005516 engineering process Methods 0.000 claims description 16
- 238000012800 visualization Methods 0.000 claims description 6
- 238000004590 computer program Methods 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 8
- 238000012545 processing Methods 0.000 description 8
- 230000000007 visual effect Effects 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013024 troubleshooting Methods 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 230000006399 behavior Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 238000007726 management method Methods 0.000 description 1
- 230000008450 motivation Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/24—Object-oriented
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
- G06F11/3476—Data logging
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种SOA调用链路跟踪的方法、装置及系统,能够自动跟踪记录各SOA服务的调用过程,且能够对SOA服务调用过程中调用的各个方法跟踪记录,从而可以方便快速的获取SOA调用链路跟踪数据,便于问题的排查和处理。该方法包括:利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;保存拦截到的调用链路跟踪数据。
Description
技术领域
本发明涉及计算机技术及软件领域,尤其涉及一种SOA调用链路跟踪的方法、装置及系统。
背景技术
通常情况下,业务应用的服务器平台一般可分为多个功能单元,这种结构被称为面向服务的体系结构(Service-Oriented Architecture,即SOA)。用户通过客户端发起的各个Http请求到达应用服务器后,会经过很多业务系统或者SOA组件,留下痕迹。当出现处理逻辑错误的时候,往往需要将这些业务服务的每个方法调用的输入输出,以及调用链路树很方便地呈现出来,来排查问题。
现有技术中通过调用链路跟踪来排查调用过程中问题的做法通常是:通过基于Log4J等的第三方开源的日志库,在编程的时候加入一些日志代码,应用服务器运行过程中生成日志,并通过文件打印出来。在遇到问题时,查看相关日志文件,异常日志即为问题所在。
但是现有技术的调用链路跟踪及错误排查方案存在一定的缺陷:
1.如果遇到一个问题,碰巧编程忘记加日志代码,则很难查出问题,在现有的SOA业务中,这种问题经常出现;
2.保存日志文件时,日志文件一般较大,占用大量磁盘空间,需要定期删除,且同一时期很难保存和管理这么多日志文件;大量日志文件的查询也存在较大困难;
3.针对多个SOA业务,就需要多个log4J系统,构建繁杂,管理不便。
发明内容
有鉴于此,本发明提供一种SOA调用链路跟踪的方法、装置及系统,能够自动跟踪记录各SOA服务的调用过程,且能够对SOA服务调用过程中调用的各个方法跟踪记录,从而可以方便快速的获取SOA调用链路跟踪数据,便于问题的排查和处理。
为实现上述目的,根据本发明的一个方面,提供了一种SOA调用链路跟踪的方法。
本发明实施例的一种SOA调用链路跟踪的方法包括:利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;保存拦截到的调用链路跟踪数据。
可选地,所述分布式同步协调服务采用zookeeper实现。
可选地,所述全局拦截器为Struts2拦截器,所述方法拦截器使用AspectJ技术实现。
可选地,保存拦截到的调用链路跟踪数据还包括:将拦截到的调用链路跟踪数据以键值对的形式加入先入先出的阻塞队列,当阻塞队列的队列长度达到预设阈值时,将阻塞队列中的键值对批量导入HBase数据库。
可选地,所述方法还包括:当所述SOA服务的接口请求和/或所述SOA服务请求的各个链路方法的调用出现异常时,对拦截到的调用链路跟踪数据进行异常标记。
可选地,所述方法还包括:采用可视化技术呈现保存的调用链路跟踪数据,并以与正常的调用链路跟踪数据不同的颜色呈现异常的调用链路跟踪数据。
为实现上述目的,根据本发明的另一方面,提供了一种SOA调用链路跟踪的装置。
本发明实施例的一种SOA调用链路跟踪的装置包括:配置模块,用于利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;拦截模块,用于拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;保存模块,用于保存拦截到的调用链路跟踪数据。
可选地,所述分布式同步协调服务采用zookeeper实现。
可选地,所述全局拦截器为Struts2拦截器,所述方法拦截器使用AspectJ技术实现。
可选地,所述保存模块还用于:将拦截到的调用链路跟踪数据以键值对的形式加入先入先出的阻塞队列,当阻塞队列的队列长度达到预设阈值时,将阻塞队列中的键值对批量导入HBase数据库。
可选地,所述拦截模块还用于:当所述SOA服务的接口请求和/或所述SOA服务请求的各个链路方法的调用出现异常时,对拦截到的调用链路跟踪数据进行异常标记。
可选地,所述装置还包括:呈现模块,用于采用可视化技术呈现保存的调用链路跟踪数据,并以与正常的调用链路跟踪数据不同的颜色呈现异常的调用链路跟踪数据。
为实现上述目的,根据本发明的再一方面,提供了一种SOA调用链路跟踪的系统。
本发明实施例的一种SOA调用链路跟踪的系统包括:存储器和处理器;其中,所述存储器存储指令;所述处理器被配置为根据所述指令执行下列步骤:利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;保存拦截到的调用链路跟踪数据。
为实现上述目的,根据本发明的又一方面,提供了一种电子设备。
本发明的电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明实施例的SOA调用链路跟踪的方法。
为实现上述目的,根据本发明的又一方面,提供了一种计算机可读介质。
本发明实施例的一种计算机可读介质包括:所述计算机可读介质存储有计算机指令,所述指令被处理器执行时实现本发明实施例的SOA调用链路跟踪的方法。
根据本发明的技术方案,通过利用全局拦截器和方法拦截器,将SOA服务调用过程中的入参和出参、调用时间以及调用链路中的所有方法的入参和出参、调用时间都予以保存,从而可以解决忘记加日志的问题,方便快速的获取SOA调用链路跟踪数据,方便业务处理过程中的问题排查和处理;通过利用分布式同步协调服务配置多个SOA服务加入链路跟踪过程,从而可以方便地停止和启动链路跟踪程序;通过将调用链路跟踪数据加入阻塞队列,异步批量写入,从而可以提升调用链路跟踪数据的写入速度;通过利用分布式存储调用链路跟踪数据,从而可以通过大数据处理查询得到每个请求的输入输出参数和调用时间;通过利用可视化界面呈现调用链路跟踪数据,且将错误数据用明显的特殊颜色呈现,从而可以方便的定位问题数据。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的SOA调用链路跟踪的方法的主要步骤的示意图;
图2是根据本发明实施例的拦截SOA服务调用过程中的调用链路跟踪数据的主要过程的示意图;
图3是根据本发明实施例的SOA调用链路跟踪的装置的主要模块的示意图;
图4是根据本发明实施例的SOA调用链路跟踪的系统的主要部分的示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
本发明实施例的SOA调用链路跟踪的方法主要是通过全局拦截器和方法拦截器,拦截所有SOA服务接口调用方法链路跟踪数据,通过消息队列,进行异步存储,解决忘记加日志的问题;此外,通过分布式数据库(例如但不限于是HBase),来存储所有方法链路的输入输出参数;还可以通过分布式同步协调服务(例如但不限于ZooKeeper,例如还可以是利用同步消息队列机制实现),来同步配置多个SOA服务是否加入拦截配置,配置完成后,触发SOA服务,即可进行全局拦截和方法拦截。
图1是根据本发明实施例的SOA调用链路跟踪的方法的主要步骤的示意图。
如图1所示,本发明实施例的SOA调用链路跟踪的方法包括:
步骤S11:利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务。其中,分布式同步协调服务可以采用zookeeper实现。
在步骤S11的配置完成后,从步骤S12开始进行拦截。
步骤S12:拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间。
本发明实施例中,全局拦截器可以是Struts2拦截器,方法拦截器可以使用AspectJ技术实现。Struts2拦截器是在访问某个服务或服务的某个方法的字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP面向切面编程的一种实现.Struts2拦截器拦截的是整个接口的输入和输出参数。但是还需要服务接口的每个方法的输入输出参数。这时候使用Spring Aspect技术。
AspectJ(也就是AOP)的动机是发现那些使用传统的编程方法无法很好处理的问题。考虑一个要在某些应用中实施安全策略的问题。安全性是贯穿于系统所有模块间的问题,每个模块都需要应用安全机制才能保证整个系统的安全性,很明显这里的安全策略的实施问题就是一个横切关注点,使用传统的编程解决此问题非常困难且容易出错,这就需要AOP发挥作用。AspectJ使用了Java5的注解,可以将切面声明为普通的Java类。
传统的面向对象编程中,每个单元就是一个类,而类似于安全性这方面的问题,它们通常不能集中在一个类中处理,因为它们横跨多个类。这就导致了代码无法重用,可维护性差且产生大量代码冗余。
面向方面编程针对于这些横切关注点进行处理,就好像面向对象编程处理一般的关注点一样。而作为AOP的具体实现之一的AspectJ,它向Java中加入了连接点(JoinPoint)这个新概念,其实它也只是现存的一个Java概念的名称而已。它向Java语言中加入少许新结构:切点(pointcut)、通知(Advice)、类型间声明(Inter-type declaration)和方面(Aspect)。切点和通知动态地影响程序流程,类型间声明则是静态的影响程序的类等级结构,而方面则是对所有这些新结构的封装。
一个连接点是程序流中指定的一点。切点收集特定的连接点集合和在这些点中的值。一个通知是当一个连接点到达时执行的代码,这些都是AspectJ的动态部分。其实连接点就好比是程序中的一条一条的语句,而切点就是特定一条语句处设置的一个断点,它收集了断点处程序栈的信息,而通知就是在这个断点前后想要加入的程序代码。AspectJ中也有许多不同种类的类型间声明,这就允许程序员修改程序的静态结构、名称、类的成员以及类之间的关系。AspectJ中的方面是横切关注点的模块单元。它们的行为与Java语言中的类很像,但是方面还封装了切点、通知以及类型间声明。
步骤S13:保存拦截到的调用链路跟踪数据。
其中,保存拦截到的调用链路跟踪数据还包括:将拦截到的调用链路跟踪数据以键值对的形式加入先入先出的阻塞队列,当阻塞队列的队列长度达到预设阈值时,将阻塞队列中的键值对批量导入HBase数据库。
本发明实施例中,SOA调用链路跟踪的方法还包括:当SOA服务的接口请求和/或所述SOA服务请求的各个链路方法的调用出现异常时,对拦截到的调用链路跟踪数据进行异常标记。如本发明的背景技术中描述,通过方便的跟踪SOA服务调用链路数据,从而可以方便有效的排查业务请求过程中出现的错误,或者为流程优化提供帮助。因此,在跟踪调用链路数据的过程中,直接将异常数据进行标记,可以方便的进行错误的筛选和排查。
此外,本发明实施例中,还可以采用可视化技术呈现Hbase等数据库保存的调用链路跟踪数据,并以与正常的调用链路跟踪数据不同的颜色呈现异常的调用链路跟踪数据。例如正常的调用链路跟踪数据的背景颜色呈现为白色,而异常的调用链路跟踪数据呈现的时候将背景颜色设定为红色等其他差别颜色。
图2是根据本发明实施例的拦截SOA服务调用过程中的调用链路跟踪数据的主要过程的示意图。以下结合图2对本发明实施例的SOA调用链路跟踪的方法进行详细介绍。
本发明实施例中,利用分布式同步协调服务配置需要进行调用链路数据跟踪的SOA服务,例如图中的SOA1、SOA2、SOA3。例如在面向服务的体系结构构建的电子商务系统中,通常存在充值SOA服务器后台,领取优惠券SOA服务器后台等,它们都是独立的服务组件,称为SOA服务,本发明实施例中,需要跟踪每个SOA服务中各个服务接口的输入、输出参数、调用时间等数据。
以充值SOA服务组件为例,用户通过客户端上传其手机号码和充值金额。则在调用链路数据跟踪的过程中,需要跟踪到的输入参数如下:
1.用户的手机系统类型,例如Android和iOS;
2.用户的手机的屏幕尺寸、操作系统版本、用户的IP、用户的Token等;
3.用户的手机号码、充值金额等,以供后续计算。
鉴于每个SOA服务都是独立的,是基于Struts的开源框架(Struts是Apache软件基金会(ASF)赞助的一个开源项目。它最初是Jakarta项目中的一个子项目,并在2004年3月成为ASF的顶级项目。它通过采用JavaServlet/JSP技术,实现了基于Java EEWeb应用的MVC设计模式的应用框架,是MVC经典设计模式中的一个经典产品),所以通过基于Struts的拦截器统一拦截到这些用户的信息保存到一个类InputParams中。调用完成后,将输出一个结果。在整个过程链路中,将通过许多方法,因此还需要跟踪每一个方法调用的输入、输出参数。因此,此处拦截是指两个方面,一方面是整个服务接口请求的输入输出参数等数据,另一方面是某个服务调用过程中调用的各个方法的输入输出参数等数据。
总的来说,在通过分布式同步协调服务来配置某些SOA服务进行链路跟踪后,开始对SOA服务走一整套跟踪逻辑。如上所述,分布式同步协调服务可以有多个实现,此处以Zookeeper为例进行实现。
ZooKeeper是一个分布式的,开放源码的分布式应用程序同步协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。此外,本发明实施例中,利用分布式协调服务进行配置时,还可以利用HTMLDIV CSS JavaScript设计一个可视化的配置平台,配置哪些SOA服务需要跟踪链路。
一旦SOA接入分布式协调服务,SOA就会启动分布式协调服务发现机制,发现分布式协调服务配置了这个SOA信息后,就会启动整个链路跟踪系统。
当有一个针对该SOA服务的网络请求过来,SOA服务就会通过一个全局的拦截器(例如可以通过struts的interceptor等方式实现),这种全局拦截器技术将得到整个请求方法的输入输出参数,开始结束时间。
然而这样还是不够的,需要得到整个服务请求调用过程中经过的各个方法的输入输出参数,此动作的实现可以使用基于JAVA的ApsectJ技术,来建立方法级的拦截,拦截到每个方法的输入、输出参数,开始、结束时间。
针对上述拦截,通过键值对来记录每个拦截的拦截数据,其中全局拦截器的键名为请求方法名(例如A)+方法调用计数(自增长,例如000001),值为JSON的格式,包括输入、输出参数,开始、结束时间。方法拦截器的键名为请求的全局方法名(包括计数,例如A000001)+该方法名(例如a)+方法调用计数(000001),值为JSON的格式,包括输入、输出参数,开始、结束时间。
所有的键值对将通过一个先入先出的阻塞队列进行存储,所有的拦截方法的键值对都会记录在这个存储键值队的队列里。阻塞队列的特点是如果没有空间,写阻塞,如果没有数据,读阻塞。本发明实施例中可以设置阻塞队列长度为20000。
整个拦截过程中,每次接口请求都由struts2拦截器拦截输入输出参数,再通过AspectJ技术拦截各个方法,得到方法的入参和返回参数,同时拦截开始和结束的时间也会被记录,按照前述方式加入全局的阻塞队列BlockingQueue中,大小为20000个,如果队列空间已满,队列阻塞。然后通过调用线程中的单线程方法,异步执行批量存储,将键值对存储到分布式数据库(例如但不限于HBase)里。本发明实施例中,之所以采用异步批量存储的方式,是因为拦截的参数记录很多,拦截速度快,在毫秒级别。如果一个个读写入分布式数据库,则势必会漏掉数据,所以每满20000个,就将这些参数通过分布式的批量写入,写入支持批量写入的分布式数据库,如上所述的HBase。
本发明实施例中,若拦截过程中,拦截的方法如果出现异常和错误,那么在JAVA中会抛出异常,说明方法中有异常数据。此时拦截器(包括全局拦截器以及方法拦截器)也会将抛出的异常拦截到,在记录输入参数、输出参数、开始结束时间的同时,在键值对的值数据中加入一个error或类似的标志。
在保存数据之后,可以通过一个可视化界面调用并查看拦截到的调用链路跟踪数据,以直观地查看到调用过程,和调用时间。
根据本发明实施例的SOA调用链路跟踪的方法可以看出,通过利用全局拦截器和方法拦截器,将SOA服务调用过程中的入参和出参、调用时间以及调用链路中的所有方法的入参和出参、调用时间都予以保存,从而可以解决忘记加日志的问题,方便快速的获取SOA调用链路跟踪数据,方便业务处理过程中的问题排查和处理;通过利用分布式同步协调服务配置多个SOA服务加入链路跟踪过程,从而可以方便地停止和启动链路跟踪程序;通过将调用链路跟踪数据加入阻塞队列,异步批量写入,从而可以提升调用链路跟踪数据的写入速度;通过利用分布式存储调用链路跟踪数据,从而可以通过大数据处理查询得到每个请求的输入输出参数和调用时间;通过利用可视化界面呈现调用链路跟踪数据,且将错误数据用明显的特殊颜色呈现,从而可以方便的定位问题数据。
图3是根据本发明实施例的SOA调用链路跟踪的装置的主要模块的示意图。
如图3所示,本发明实施例的一种SOA调用链路跟踪的装置30包括:配置模块301、拦截模块302以及保存模块303。其中,
配置模块301用于利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;拦截模块302用于拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;保存模块303用于保存拦截到的调用链路跟踪数据。
其中,分布式同步协调服务采用zookeeper实现。全局拦截器为Struts2拦截器,所述方法拦截器使用AspectJ技术实现。
本发明实施例中,保存模块303还可用于:将拦截到的调用链路跟踪数据以键值对的形式加入先入先出的阻塞队列,当阻塞队列的队列长度达到预设阈值时,将阻塞队列中的键值对批量导入HBase数据库。
拦截模块302还可用于:当所述SOA服务的接口请求和/或所述SOA服务请求的各个链路方法的调用出现异常时,对拦截到的调用链路跟踪数据进行异常标记。
此外,装置30还可包括:呈现模块(图中未示出),用于采用可视化技术呈现保存的调用链路跟踪数据,并以与正常的调用链路跟踪数据不同的颜色呈现异常的调用链路跟踪数据。
图4是根据本发明实施例的SOA调用链路跟踪的系统的主要部分的示意图。
如图4所示,本发明实施例的一种SOA调用链路跟踪的系统40包括存储器401和处理器402,其中:存储器401存储指令;处理器402被配置为根据所述指令执行下列步骤:利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;保存拦截到的调用链路跟踪数据。
从以上描述可以看出,通过利用全局拦截器和方法拦截器,将SOA服务调用过程中的入参和出参、调用时间以及调用链路中的所有方法的入参和出参、调用时间都予以保存,从而可以解决忘记加日志的问题,方便快速的获取SOA调用链路跟踪数据,方便业务处理过程中的问题排查和处理;通过利用分布式同步协调服务配置多个SOA服务加入链路跟踪过程,从而可以方便地停止和启动链路跟踪程序;通过将调用链路跟踪数据加入阻塞队列,异步批量写入,从而可以提升调用链路跟踪数据的写入速度;通过利用分布式存储调用链路跟踪数据,从而可以通过大数据处理查询得到每个请求的输入输出参数和调用时间;通过利用可视化界面呈现调用链路跟踪数据,且将错误数据用明显的特殊颜色呈现,从而可以方便的定位问题数据。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (13)
1.一种SOA调用链路跟踪的方法,其特征在于,包括:
利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;
拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;
保存拦截到的调用链路跟踪数据;
保存拦截到的调用链路跟踪数据还包括:将拦截到的调用链路跟踪数据以键值对的形式加入先入先出的阻塞队列,当阻塞队列的队列长度达到预设阈值时,将阻塞队列中的键值对批量导入HBase数据库。
2.根据权利要求1所述的方法,其特征在于,所述分布式同步协调服务采用zookeeper实现。
3.根据权利要求1所述的方法,其特征在于,所述全局拦截器为Struts2拦截器,所述方法拦截器使用AspectJ技术实现。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:当所述SOA服务的接口请求和/或所述SOA服务请求的各个链路方法的调用出现异常时,对拦截到的调用链路跟踪数据进行异常标记。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:采用可视化技术呈现保存的调用链路跟踪数据,并以与正常的调用链路跟踪数据不同的颜色呈现异常的调用链路跟踪数据。
6.一种SOA调用链路跟踪的装置,其特征在于,包括:
配置模块,用于利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;
拦截模块,用于拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;
保存模块,用于保存拦截到的调用链路跟踪数据;
所述保存模块还用于:将拦截到的调用链路跟踪数据以键值对的形式加入先入先出的阻塞队列,当阻塞队列的队列长度达到预设阈值时,将阻塞队列中的键值对批量导入HBase数据库。
7.根据权利要求6所述的装置,其特征在于,所述分布式同步协调服务采用zookeeper实现。
8.根据权利要求6所述的装置,其特征在于,所述全局拦截器为Struts2拦截器,所述方法拦截器使用AspectJ技术实现。
9.根据权利要求6所述的装置,其特征在于,所述拦截模块还用于:当所述SOA服务的接口请求和/或所述SOA服务请求的各个链路方法的调用出现异常时,对拦截到的调用链路跟踪数据进行异常标记。
10.根据权利要求9所述的装置,其特征在于,所述装置还包括:呈现模块,用于采用可视化技术呈现保存的调用链路跟踪数据,并以与正常的调用链路跟踪数据不同的颜色呈现异常的调用链路跟踪数据。
11.一种SOA调用链路跟踪的系统,其特征在于,包括:
存储器和处理器;其中,
所述存储器存储指令;
所述处理器被配置为根据所述指令执行下列步骤:
利用分布式同步协调服务,配置需要进行调用链路跟踪的SOA服务;
拦截所述SOA服务调用过程中的调用链路跟踪数据,包括利用全局拦截器拦截所述SOA服务的接口请求的输入参数、输出参数、开始时间、结束时间,以及利用方法拦截器拦截所述SOA服务请求的各个链路方法的输入参数、输出参数、开始时间、结束时间;
保存拦截到的调用链路跟踪数据;
保存拦截到的调用链路跟踪数据还包括:将拦截到的调用链路跟踪数据以键值对的形式加入先入先出的阻塞队列,当阻塞队列的队列长度达到预设阈值时,将阻塞队列中的键值对批量导入HBase数据库。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-5中任一所述的方法。
13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-5中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610859017.1A CN107870762B (zh) | 2016-09-28 | 2016-09-28 | Soa调用链路跟踪的方法、装置及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610859017.1A CN107870762B (zh) | 2016-09-28 | 2016-09-28 | Soa调用链路跟踪的方法、装置及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107870762A CN107870762A (zh) | 2018-04-03 |
CN107870762B true CN107870762B (zh) | 2021-01-26 |
Family
ID=61761052
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610859017.1A Active CN107870762B (zh) | 2016-09-28 | 2016-09-28 | Soa调用链路跟踪的方法、装置及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107870762B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110780883A (zh) * | 2018-07-30 | 2020-02-11 | 网宿科技股份有限公司 | 方法调用链跟踪方法、电子装置及计算机可读存储介质 |
CN111193631B (zh) * | 2018-11-14 | 2022-02-08 | 中国电信股份有限公司 | 信息处理方法、系统和计算机可读存储介质 |
CN110287053B (zh) * | 2019-06-27 | 2022-11-04 | 四川新网银行股份有限公司 | 分布式系统异常统一处理的方法 |
CN111078432B (zh) * | 2019-12-10 | 2024-04-16 | 深圳前海环融联易信息科技服务有限公司 | 一种服务之间调度的追踪方法及装置 |
CN111177599A (zh) * | 2019-12-26 | 2020-05-19 | 紫光云(南京)数字技术有限公司 | 基于切面的跨系统链路追踪方法 |
CN111539642B (zh) * | 2020-04-29 | 2023-08-04 | 西安电子科技大学青岛计算技术研究院 | 一种基于面向对象的电厂数据采集处理系统及其方法 |
CN111680293B (zh) * | 2020-06-11 | 2024-01-16 | 天翼安全科技有限公司 | 基于互联网的信息监控管理方法、装置及服务器 |
CN112667511A (zh) * | 2020-12-30 | 2021-04-16 | 广州凡科互联网科技股份有限公司 | 一种通过插入代码来追踪java程序内部调用链的方法 |
CN112861053A (zh) * | 2021-01-18 | 2021-05-28 | 北京致远互联软件股份有限公司 | 一种任务系统调用链路的表单跟踪系统 |
CN113434361A (zh) * | 2021-06-23 | 2021-09-24 | 平安国际智慧城市科技股份有限公司 | 系统异常告警方法、系统、电子设备及存储介质 |
CN115766532A (zh) * | 2022-10-21 | 2023-03-07 | 上海芯赛云计算科技有限公司 | 链路的监测方法、装置、存储介质及电子装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930370A (zh) * | 2010-09-09 | 2010-12-29 | 上海普元信息技术股份有限公司 | Soa应用系统服务集成中实现数据转换的系统结构及其方法 |
CN105138592A (zh) * | 2015-07-31 | 2015-12-09 | 武汉虹信技术服务有限责任公司 | 一种基于分布式架构的日志数据存储和检索方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8640085B2 (en) * | 2009-07-01 | 2014-01-28 | International Business Machines Corporation | Generating a service component architecture (SCA) module with service oriented architecture (SOA) model elements |
CN102622227B (zh) * | 2011-09-13 | 2017-06-13 | 北京科技大学 | 一种支持动态配置的构件模型及构件工厂的装置 |
CN105159667B (zh) * | 2015-08-07 | 2018-05-01 | 北京思特奇信息技术股份有限公司 | 一种web service接口调用参数转换方法及系统 |
CN105224445B (zh) * | 2015-10-28 | 2017-02-15 | 北京汇商融通信息技术有限公司 | 分布式跟踪系统 |
-
2016
- 2016-09-28 CN CN201610859017.1A patent/CN107870762B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101930370A (zh) * | 2010-09-09 | 2010-12-29 | 上海普元信息技术股份有限公司 | Soa应用系统服务集成中实现数据转换的系统结构及其方法 |
CN105138592A (zh) * | 2015-07-31 | 2015-12-09 | 武汉虹信技术服务有限责任公司 | 一种基于分布式架构的日志数据存储和检索方法 |
Also Published As
Publication number | Publication date |
---|---|
CN107870762A (zh) | 2018-04-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107870762B (zh) | Soa调用链路跟踪的方法、装置及系统 | |
US10783051B2 (en) | Performance regression framework | |
US11238036B2 (en) | System performance logging of complex remote query processor query operations | |
Brazil | Prometheus: Up & Running: Infrastructure and Application Performance Monitoring | |
US10984109B2 (en) | Application component auditor | |
CN109656773B (zh) | 一种基于ios系统应用异常崩溃的处理框架 | |
CN110489310B (zh) | 一种记录用户操作的方法、装置、存储介质及计算机设备 | |
US20220138069A1 (en) | Agent profiler to monitor activities and performance of software agents | |
US20230319054A1 (en) | Tenant-specific solution subscriptions for an extensibility platform | |
US10394531B2 (en) | Hyper dynamic Java management extension | |
US20230214229A1 (en) | Multi-tenant java agent instrumentation system | |
US10644971B2 (en) | Graph search in structured query language style query | |
US10706108B2 (en) | Field name recommendation | |
US10846200B2 (en) | Mid-method instrumentation | |
WO2023192230A1 (en) | Graph-based query engine for an extensibility platform | |
KR20170122874A (ko) | 데이터 분산 서비스 기반의 응용 시스템의 통합 로그 관리 장치 | |
US12063228B2 (en) | Mitigating security threats in daisy chained serverless FaaS functions | |
US20140337728A1 (en) | Operating oracle forms using a web service | |
Vetter | Detecting operator errors in cloud maintenance operations | |
Shivakumar et al. | Web performance monitoring and infrastructure planning | |
US12009997B2 (en) | Cell-based architecture for an extensibility platform | |
Pivotto et al. | Prometheus: Up & Running | |
US11936517B2 (en) | Embedding custom container images and FaaS for an extensibility platform | |
US20230315514A1 (en) | Configuration-driven data processing pipeline for an extensibility platform | |
US20230315580A1 (en) | Disaster recovery in a cell model for an extensibility platform |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |