CN104731564A - 系统接口调用记录的生成方法和装置 - Google Patents
系统接口调用记录的生成方法和装置 Download PDFInfo
- Publication number
- CN104731564A CN104731564A CN201310699613.4A CN201310699613A CN104731564A CN 104731564 A CN104731564 A CN 104731564A CN 201310699613 A CN201310699613 A CN 201310699613A CN 104731564 A CN104731564 A CN 104731564A
- Authority
- CN
- China
- Prior art keywords
- system interface
- record
- call
- calls
- layer
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供了一种系统接口调用记录的生成方法和装置,所述方法包括:比较对相同系统接口的连续N次调用的调用信息是否相同,如果相同,则根据N次调用信息合并生成调用记录,N为大于1的整数。本发明提供的方法根据比较相应的调用信息,将相同的调用信息合并起来生成调用记录,不在业务代码中到处做程序调整,又能够做到对业务代码的透明化,而且能够精确统计。
Description
技术领域
本发明涉及通信领域,尤其涉及一种系统接口调用记录的生成方法和装置。
背景技术
随着计算机技术的发展,用户可以在计算机系统中安装各式各样的应用程序来满足其不同的使用需求,对于各种应用程序,获取其使用的频率,根据各个应用程序的使用频率来优化系统。
目前大部分基于j2ee的程序都遵循MVC(model view controller模型-视图-控制器)架构,通过软件分层来实现,基于此架构搭建的应用系统,每一个动作都基本对应一个具体的业务操作,如创建订单是一个单独的动作,如何能统计出每个业务操作在服务器端的系统接口调用记录,目前尚没有很好的解决方案。
发明内容
在下文中给出关于本发明的简要概述,以便提供关于本发明的某些方面的基本理解。应当理解,这个概述并不是关于本发明的穷举性概述。它并不是意图确定本发明的关键或重要部分,也不是意图限定本发明的范围。其目的仅仅是以简化的形式给出某些概念,以此作为稍后论述的更详细描述的前序。
一方面,本发明提供一种系统接口调用记录的生成方法,包括:比较对相同系统接口的连续N次调用的调用信息是否相同,如果相同,则根据N次调用信息合并生成调用记录,N为大于1的整数。
另一方面,本发明提供了一种系统接口调用记录的生成装置,包括:调用信息存储模块,用于存储对相同系统接口调用的调用信息;调用信息比较模块,用于比较存储起来的调用信息是否相同;调用记录生成模块,用于当所述调用信息比较模块反馈相同的信号时,合并相同的调用信息。
本发明提出的系统接口调用记录的生成方法和装置,通过获取系统接口的调用信息,比较相同系统的多次调用信息是否相同,并将相同的调用信息合并生成一条调用记录,该方法可以精确统计调用信息并合成调用记录,做到精确统计的目的,又无需在业务代码里到处做程序调整,实现方式简单。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中系统接口调用记录的生成方法流程图;
图2至图6为本发明实施例中系统接口调用信息获取时各拦截对象入栈和出栈示意图;
图7为本发明实施例中系统接口调用记录的生成方法可选的模块结构图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。在本发明的一个附图或一种实施方式中描述的元素和特征可以与一个或更多个其它附图或实施方式中示出的元素和特征相结合。应当注意,为了清楚的目的,附图和说明中省略了与本发明无关的、本领域普通技术人员已知的部件和处理的表示和描述。基于本发明中的实施例,本领域普通技术人员在没有付出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一:
如图1所示为本发明实施例中系统接口调用记录的生成方法流程图,本发明提供了一种系统接口调用记录的生成方法,包括步骤:
S11:比较对相同系统接口的连续N次调用的调用信息是否相同;
S12:如果相同,则根据N次调用信息合并生成调用记录,N为大于1的整数。
在实际使用中,会对系统接口进行调用,会出现对同一个系统接口进行多次调用的情况,每次调用时的调用信息都会进行存储,多占了系统的存储空间,需要将对相同系统接口的多次调用信息合并起来,生成一条调用记录,并且记录下调用的次数即可。将多次相同的调用记录合并可以节省内存的空间,并且在查看时只需要查看相同的记录和调用次数即可,操作方便快捷。
在将多次调用信息合并起来之前,首先需要比较对相同系统接口的连续N次调用的调用信息是否相同,所述调用信息为对系统接口发出的调用请求,即比较同一个系统接口接收到的调用请求是否相同,N为大于1的整数;
如果比较得到同一个系统接口收到的多次调用请求时相同的,根据比较得到的调用请求相同的调用信息合并起来,生成调用记录,并且所述合并生成的调用记录包括基于相同调用信息连续调用系统接口的累积次数。
所述调用记录除了调用信息之外还有调用的累积次数,用户在查看的时候可以很方便的查看到调用的信息和记录,方便用户的查看和操作。
在上述比较同一个系统接口接收到的调用请求是否相同之前,需要先获取系统接口的调用信息,对系统接口调用信息的获取方法为:
对各层系统接口的调用请求分别进行拦截并生成拦截对象,
将各拦截对象根据各层调用的先后顺序入栈;
按后进先出的顺序将堆栈中的各拦截对象进行出栈处理并添加出栈时刻对应的结束时间戳;
根据出栈后的各拦截对象获取相应各层系统接口的调用信息。
首先,系统中不同层的接口会发出调用请求,首先对不同的系统接口的调用请求进行拦截并分别生成拦截对象,可选的,所述拦截对象包括相应系统接口的调用请求和调用开始时间戳,即获取对相应系统接口进行调用需要的调用请求和开始调用的时间。所述拦截并不是对所有的调用请求都进行拦截,可选的面对各层系统接口的调用请求,根据预设条件选择要拦截的指定业务操作或者剔除不需要拦截的地址。例如,统计用户访问某个链接的次数,需要拦截对所述链接的访问,对其他链接的访问则不需要拦截。
然后将各拦截对象根据各层调用的先后顺序入栈,可选的,所述系统接口根据调用的先后顺序分为:WEB层,业务层,数据层;在业务系统中,对不同层进行调用,并且根据调用的顺序入栈。
随后根据后进先出的顺序将堆栈中的各个拦截对象进行出栈处理,即对相应系统接口的调用请求和调用开始时间戳进行出栈处理,在出栈的同时添加对应的结束时间戳。
最后根据出栈后的各拦截对象,所述拦截对象为对系统接口的调用请求,调用开始时间戳和调用结束时间戳,根据上述信息获取相应各层系统的调用信息。
对系统接口调用信息的获取方法采用异步的方式发送所述调用信息。所述异步为一种通讯方式,双方不需要共同的时钟,发送方可以在任何时候进行发送,在发送的信息中有提示接收方开始接收的信息,例如开始位,结束的时候有结束位。本发明中提到的提示接收方开始接收或结束接收消息的信号为,调用开始时间戳和调用结束时间戳。
为了清楚的描述本发明实施例,首先对本发明实施例涉及的相关技术术语做一些介绍:
hornetq是一个支持集群和多种协议,可嵌入、高性能的异步消息系统。
Struts2拦截器是在访问某个Action或Action的某个方法之前或之后实施拦截。
Spring框架是一个轻量级控制反转和面向切面的容器框架。
AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。
下面以本实施例系统接口调用信息的获取方法在hornetq系统中的应用,进一步说明本发明的技术方案。可选的,本发明所述的拦截器可为Struts2拦截器。
业务系统通过统计,收集客户端程序,通过hornetq消息服务器将数据保存到监控平台的数据库中,用户通过监控中心统一查看调用堆栈信息。
每个action基本对应一个具体的业务操作,本实施例对action的统计采用struts2的拦截器技术进行实现的,在该拦截器中可以配置是否启用此统计功能,通过在该拦截器中设置一个标记位,所述标记位默认启用,另外还在该拦截器设置了需要拦截的名单机制和不需要拦截的名单机制:include和exclude名单机制,即业务系统可以根据实际需要选择要拦截指定的业务操作或把不需要拦截的地址剔除掉
web层以下调用业务层,业务层调用数据层统一使用spring框架的aop功能进行统一拦截,即当执行该方法时记录执行的时间和上下文信息。
举例来讲:创建用户操作
http://192.168.1.102:8080/user/createUser.action
该功能对应的程序逻辑为:
CreateUserAction.java
---UserService.java类的createUser方法
------UserDAO.java类的saveUser方法
1、用户访问某一个业务操作链接(对应一个action),被统计拦截器拦截;
2、在拦截器中记录开始时间t1,当前action的类名,方法名,并把这些信息保存在一个对象profileBeanTop中,保存在线程变量所持有的栈中,此时堆栈中的元素如图2所示为:
profileBeanAction。
3、依次执行完毕其他拦截器的逻辑后进入具体的action程序中
4、CreateUserAction类中会调用业务逻辑处理的业务组件UserService.createUser()方法,因为对业务层的代码有spring的aop拦截,因此执行时进入业务层的拦截统计处理。
A:记录进入业务逻辑处理的时间t2,业务逻辑处理要执行的方法createUser以及业务层的类UserService,并把这些信息组织成一个对象profileBeanBiz压入到栈中,此时栈中的元素如如图3所示为:
profileBeanBiz,profileBeanAction。
B:业务逻辑处理中调用数据层组件,调用数据层又会被spring的aop拦截,因此重复如上A步骤,将数据库访问方法的信息压入栈中,栈中元素如图4所示为:
profileBeanDAO,profileBeanBiz,profileBeanAction。
C:数据库访问方法执行完毕,记录数据层方法的执行结束时间t22’,获得数据库访问方法的执行总时间为t3’-t3,并把数据库访问方法对应的统计信息对象弹出栈中,这时栈中的元素如图5所示为:
profileBeanBiz,profileBeanAction。
D:数据库访问执行完毕后继续执行业务逻辑处理方法的剩余部分逻辑,如果要执行的逻辑依旧满足spring aop配置的统计拦截规则,则重复如上步骤进行入栈出栈逻辑,业务逻辑处理执行完毕后,记录业务逻辑处理的总执行时间为t2’-t2,然后将栈顶元素出栈,元素如图6所示为:profileBeanAction。
E:业务逻辑处理执行完毕,继续执行action层的其他逻辑,如剩余逻辑中尚需其他业务层调用满足aop拦截规则,重复执行如上逻辑,action执行完毕时,记录时间t1’,则action的执行总时间为t1’-t1。
上述对系统接口调用信息的获取中,步骤A-E为系统接口调用的过程,也可能存在一个action中循环调用一个业务逻辑处理方法或一个业务逻辑处理方法中循环调用某个数据库访问方法的场景,在统计的时候最终关心的是循环的总次数以及循环所用的总时间,而不是每次重复的循环信息,因此需要对这些循环信息做合并,把一次调用中属于一个方法调用的总数和总时间记录下来,这里使用的是java中的map对象,在如上步骤中把每个对象压入堆栈中之前,都会把当前的类名+方法名作为key值,如UserService.createUser,该key对应的value为这个方法执行的次数,每当aop拦截进入统计逻辑时,都会通过这个key找到对应的次数,循环一次,对应次数加1,执行时间也做累加操作。
实施例二:
如图2所示为本发明实施例中系统接口调用记录的生成装置可选的模块结构图,本发明还提供了一种系统接口调用记录的生成装置,包括:
调用信息存储模块21,用于存储对相同系统接口调用的调用信息;
调用信息比较模块22,用于比较存储起来的调用信息是否相同;
调用记录生成模块23,用于当所述调用信息比较模块反馈相同的信号时,合并相同的调用信息。
在生成调用记录之前首先要比较相同系统接口的调用信息,所述调用信息存储模块21就用来存储相应的调用信息,存储起来的调用信息会在接下来的步骤中进行比较;所以调用信息比较模块22就用于比较上述存储起来的调用信息,所述调用信息包括调用请求,所以调用信息比较模块22还用于比较所述调用请求。
比较之后,若得出调用信息相同的结论,则调用记录生成模块23合并相同的调用信息,还需要统计基于相同调用信息连续调用系统接口的累计次数。
将得到的调用信息相比较,通过比较合并的调用信息节省了内存的空间,生成的累积次数方便用户的查看和操作。
还包括调用信息获取模块24,所述调用信息获取模块用于对各层系统接口的调用请求分别进行拦截并分别生成拦截对象;将各拦截对象根据各层调用的先后顺序入栈;按后进先出的顺序将堆栈中的各拦截对象进行出栈处理并添加出栈时刻对应的结束时间戳;根据出栈后的各拦截对象获取相应各层系统接口的调用信息。并且,可选的,各系统接口根据调用的先后顺序分为:WEB层,业务层,数据层。
本实施例对action的统计采用struts2的拦截器技术进行实现的,在该拦截器中可以配置是否启用此统计功能,通过在该拦截器中设置一个标记位,所述标记位默认启用,另外还在该拦截器设置了需要拦截的名单机制和不需要拦截的名单机制:include和exclude名单机制,即业务系统可以根据实际需要选择要拦截指定的业务操作或把不需要拦截的地址剔除掉。当相同系统接口的调用信息获取到之后,将其存储在调用信息存储模块21内,然后再通过调用信息比较模块22进行比较,最后根据比较的结果生成调用记录,将对相同系统接口进行调用的调用信息的总数和总时间记录下来即可。
在本发明上述各实施例中,实施例的序号和/或先后顺序仅仅便于描述,不代表实施例的优劣。对各个实施例的描述都各有侧重,某个实施例
最后应说明的是:虽然以上已经详细说明了本发明及其优点,但是应当理解在不超出由所附的权利要求所限定的本发明的精神和范围的情况下可以进行各种改变、替代和变换。而且,本发明的范围不仅限于说明书所描述的过程、设备、手段、方法和步骤的具体实施例。本领域内的普通技术人员从本发明的公开内容将容易理解,根据本发明可以使用执行与在此所述的相应实施例基本相同的功能或者获得与其基本相同的结果的、现有和将来要被开发的过程、设备、手段、方法或者步骤。因此,所附的权利要求旨在在它们的范围内包括这样的过程、设备、手段、方法或者步骤。
Claims (8)
1.一种系统接口调用记录的生成方法,其特征在于,包括:比较对相同系统接口的连续N次调用的调用信息是否相同,如果相同,则根据N次调用信息合并生成调用记录,N为大于1的整数。
2.根据权利要求1所述的系统接口调用记录的生成方法,其特征在于,所述合并生成的调用记录包括基于相同调用信息连续调用系统接口的累积次数。
3.根据权利要求1所述的系统接口调用记录的生成方法,其特征在于,所述调用信息获取方法包括:
对各层系统接口的调用请求分别进行拦截并分别生成拦截对象;
将各拦截对象根据各层调用的先后顺序入栈;
按后进先出的顺序将堆栈中的各拦截对象进行出栈处理并添加出栈时刻对应的结束时间戳;
根据出栈后的各拦截对象获取相应各层系统接口的调用信息。
4.根据权利要求3所述的系统接口调用记录的生成方法,其特征在于,所述系统接口根据调用的先后顺序分为:WEB层,业务层,数据层。
5.一种系统接口调用记录的生成装置,其特征在于,包括:
调用信息存储模块,用于存储对相同系统接口调用的调用信息;
调用信息比较模块,用于比较存储起来的调用信息是否相同;
调用记录生成模块,用于当所述调用信息比较模块反馈相同的信号时,合并相同的调用信息。
6.根据权利要求4所述的系统接口调用记录的生成装置,其特征在于:所述调用记录生成模块还用于:统计基于相同调用信息连续调用系统接口的累计次数。
7.根据权利要求4所述的系统接口调用记录的生成装置,其特征在于,还包括:
调用信息获取模块,用于对各层系统接口的调用请求分别进行拦截并分别生成拦截对象;将各拦截对象根据各层调用的先后顺序入栈;按后进先出的顺序将堆栈中的各拦截对象进行出栈处理并添加出栈时刻对应的结束时间戳;根据出栈后的各拦截对象获取相应各层系统接口的调用信息。
8.根据权利要求7所述的系统接口调用记录的生成装置,其特征在于:所述系统接口根据调用的先后顺序分为:WEB层,业务层,数据层。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201310699613.4A CN104731564A (zh) | 2013-12-18 | 2013-12-18 | 系统接口调用记录的生成方法和装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201310699613.4A CN104731564A (zh) | 2013-12-18 | 2013-12-18 | 系统接口调用记录的生成方法和装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN104731564A true CN104731564A (zh) | 2015-06-24 |
Family
ID=53455490
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201310699613.4A Pending CN104731564A (zh) | 2013-12-18 | 2013-12-18 | 系统接口调用记录的生成方法和装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN104731564A (zh) |
Cited By (6)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107229619A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 互联网业务链路调用情况的统计、展示方法及装置 |
| CN108076483A (zh) * | 2018-01-30 | 2018-05-25 | 努比亚技术有限公司 | 合并通信方法、移动终端、服务器及计算机可读存储介质 |
| CN109286191A (zh) * | 2018-11-22 | 2019-01-29 | 国网江苏省电力有限公司 | 基于asm的j2ee电力业务应用系统的巡检系统及方法 |
| CN109992329A (zh) * | 2019-03-27 | 2019-07-09 | 南京联创北斗技术应用研究院有限公司 | 一种基于后端切面技术的方法级性能分析方法 |
| CN111782182A (zh) * | 2020-06-29 | 2020-10-16 | 联通(浙江)产业互联网有限公司 | 一种Java Web接口请求统计方法、计算机设备及可读存储介质 |
| CN113760930A (zh) * | 2021-07-30 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 业务系统中运行数据的确定方法、装置、设备及存储介质 |
Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101344865A (zh) * | 2008-08-15 | 2009-01-14 | 中兴通讯股份有限公司 | 一种cpu占用率测量方法及装置 |
| CN102681886A (zh) * | 2011-04-14 | 2012-09-19 | 天脉聚源(北京)传媒科技有限公司 | 一种移动设备上用户行为追踪的方法和系统 |
-
2013
- 2013-12-18 CN CN201310699613.4A patent/CN104731564A/zh active Pending
Patent Citations (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101344865A (zh) * | 2008-08-15 | 2009-01-14 | 中兴通讯股份有限公司 | 一种cpu占用率测量方法及装置 |
| CN102681886A (zh) * | 2011-04-14 | 2012-09-19 | 天脉聚源(北京)传媒科技有限公司 | 一种移动设备上用户行为追踪的方法和系统 |
Cited By (9)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN107229619A (zh) * | 2016-03-23 | 2017-10-03 | 阿里巴巴集团控股有限公司 | 互联网业务链路调用情况的统计、展示方法及装置 |
| CN107229619B (zh) * | 2016-03-23 | 2020-07-28 | 阿里巴巴集团控股有限公司 | 互联网业务链路调用情况的统计、展示方法及装置 |
| CN108076483A (zh) * | 2018-01-30 | 2018-05-25 | 努比亚技术有限公司 | 合并通信方法、移动终端、服务器及计算机可读存储介质 |
| CN109286191A (zh) * | 2018-11-22 | 2019-01-29 | 国网江苏省电力有限公司 | 基于asm的j2ee电力业务应用系统的巡检系统及方法 |
| CN109992329A (zh) * | 2019-03-27 | 2019-07-09 | 南京联创北斗技术应用研究院有限公司 | 一种基于后端切面技术的方法级性能分析方法 |
| CN109992329B (zh) * | 2019-03-27 | 2020-05-01 | 南京联创北斗技术应用研究院有限公司 | 一种基于后端切面技术的方法级性能分析方法 |
| CN111782182A (zh) * | 2020-06-29 | 2020-10-16 | 联通(浙江)产业互联网有限公司 | 一种Java Web接口请求统计方法、计算机设备及可读存储介质 |
| CN113760930A (zh) * | 2021-07-30 | 2021-12-07 | 北京沃东天骏信息技术有限公司 | 业务系统中运行数据的确定方法、装置、设备及存储介质 |
| CN113760930B (zh) * | 2021-07-30 | 2025-01-14 | 北京沃东天骏信息技术有限公司 | 业务系统中运行数据的确定方法、装置、设备及存储介质 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN111767143B (zh) | 交易数据处理方法、装置、设备及系统 | |
| CN104731564A (zh) | 系统接口调用记录的生成方法和装置 | |
| US20230074102A1 (en) | Method and apparatus for processing data based on block chain, device and readable storage medium | |
| CA3159538C (en) | WATERMARK-BASED TECHNIQUES FOR CAPTURING CHANGE DATA | |
| CN110162523B (zh) | 数据存储方法、系统、装置及设备 | |
| KR101719500B1 (ko) | 캐싱된 플로우들에 기초한 가속 | |
| CN108255614A (zh) | 一种基于微服务架构的接口调用系统及方法 | |
| US20210132970A1 (en) | System and method for implementing a generic parser module | |
| CN105094981B (zh) | 一种数据处理的方法及装置 | |
| CN104731650A (zh) | 系统接口调用信息的获取方法和装置 | |
| CN107133160A (zh) | 测试系统 | |
| CN109167819A (zh) | 数据同步系统、方法、装置及存储介质 | |
| WO2020216077A1 (zh) | 一种区块链事件去重方法、装置、计算机设备及存储介质 | |
| WO2024092932A1 (zh) | 交易执行方法和区块链节点 | |
| CN110275901B (zh) | 一种缓存数据调取方法及装置 | |
| CN111294377B (zh) | 一种依赖关系的网络请求发送方法、终端装置及存储介质 | |
| CN116431422B (zh) | 用于多仿真环境的访存验证系统、方法及相关设备 | |
| CN107948242A (zh) | 多服务号模板消息发送方法及系统 | |
| CN109522021A (zh) | 参数回调处理方法、装置、电子设备及存储介质 | |
| US11411726B2 (en) | Cryptographic key generation using multiple random sources | |
| WO2024221910A1 (zh) | 区块链系统中的交易执行方法和区块链节点 | |
| CN109995773A (zh) | 数据处理方法和装置 | |
| CN112702270B (zh) | 基于事件分发机制的节点调用方法、系统及存储介质 | |
| CN111782352B (zh) | 一种业务调度方法和装置 | |
| CN117235084B (zh) | 数据更新方法、装置、设备及存储介质 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| EXSB | Decision made by sipo to initiate substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| RJ01 | Rejection of invention patent application after publication | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20150624 |