本发明专利技术公开了应用层延时数据异步打点采集组件,实现跨进程或者进程内的各种需要统计延时的场景,彻底解决常见延时统计方案的复用性问题和解决打点带来的对正常延时的影响,并统一了跨主机和单进程内部的调用方式。其技术方案为:本发明专利技术的应用接口分别是启动设置指定日志文件和打点接口;本发明专利技术使得应用层在程序的任何需要打点的地方进行调用打点接口进行打点记录,组件自动记录tag_id、guid、当前时间,并在合适的时间落入到应用层指定的文件;此外本发明专利技术的应用层的每条请求都可以记录延时,便于统计异常数据;同时对于二次分析友好,三个字段的csv格式存储便于二次分析。
A kind of application layer delay data asynchronous dot collection component
【技术实现步骤摘要】
一种应用层延时数据异步打点采集组件
本专利技术涉及一种金融交易软件技术,具体涉及一种应用层延时异步打点采集组件,尤其可以应用于跨进程或者进程内的各种需要统计延时的场景。
技术介绍
在金融交易软件领域的一些高性能应用中,经常存在性能统计的需求点。如延时统计需要统计一个网络报文从一台主机发出到另一台主机处理结束的耗时时间,也需要统计一段程序从入口到结束的耗时时间,前者是系统间延时,后者是模块内延时。统计延时往往除了需要记录时间,还需要记录线程号或者程序执行点。常见的需要统计延时的场景和解决方案列举如下:第一个场景是统计多进程跨网络整体延时,常用的解决方案是网卡tcp_dump抓包,在网络问题的调试中,tcp_dump应该说是一个必不可少的工具,它是基于Unix系统的命令行式的数据包嗅探工具,可以抓取流动在网卡上的数据包,不足之处是复用性不高,对应解析开发成本高;第二个场景是统计单模块内部子函数延时,常用的解决方案是应用同步或者异步打日志,这是大多数软件开发中首先想到的方法,通过日志来记录时间,然后进行手工分析,但不足之处是日志频次过高影响性能,日志频次过低统计信息又不准确。
技术实现思路
以下给出一个或多个方面的简要概述以提供对这些方面的基本理解。此概述不是所有构想到的方面的详尽综览,并且既非旨在指认出所有方面的关键性或决定性要素亦非试图界定任何或所有方面的范围。其唯一的目的是要以简化形式给出一个或多个方面的一些概念以为稍后给出的更加详细的描述之序。本专利技术的目的在于解决上述问题,提供了一种应用层延时数据异步打点采集组件,实现跨进程或者进程内的各种需要统计延时的场景,通过提供极简化的调用接口,彻底解决常见延时统计方案的复用性问题和解决打点带来的对正常延时的影响,并统一了跨主机和单进程内部的调用方式。本专利技术的技术方案为:本专利技术揭示了一种应用层延时数据异步打点采集组件,组件包括:两个应用接口,分别是在入口处执行的初始化接口和在每一程序模块的入口和出口调用的打点接口,其中初始化接口用于包括启动设置指定日志文件在内的初始化工作,打点接口用于应用层在所需打点记录的地方进行调用以进行打点跟踪;存储模块,用于存储以三个参数字段的CSV格式文件进行二次计算和统计,其中该三个参数字段包括打点标识参数、全局用户身份证明参数、时间参数,其中打点标识参数用于标识程序打点的位置,全局用户身份证明参数用于标记业务消息或者配置操作的一个完整的生命周期的标识符,时间参数用于记录打点时刻。根据本专利技术的应用层延时数据异步打点采集组件的一实施例,初始化接口和打点接口是通过一异步组件实现的C++类来提供,异步组件实现的C++类还包含两个组件:tag_cache指针数组和tag_writer类,其中tag_cache指针数组用于存放打点标识参数对应的缓存区指针,缓存区用于容纳打点记录,其中每一个打点记录是消息体,消息体包含三个成员,分别是CSV格式文件中的三个参数字段,tag_writer类用于日志落地、缓存区管理和线程启动。根据本专利技术的应用层延时数据异步打点采集组件的一实施例,组件配置为执行以下的tag_cache指针数组的管理流程:在应用程序中,不同的打点处使用不同的打点标识参数,组件将同一个打点标识参数所对应的节点记录保存在同一个tag_cache指针数组中,直到该tag_cache指针数组写满落地至日志文件中,同时该tag_cache指针数组被回收,再申请新的tag_cache指针数组给同一打点标识参数的节点记录来保存数据,tag_cache缓存区在初始化后时期被构建出来,并将缓存区的首地址加入到无锁队列中,其中无锁队列是基于CAS操作实现的多线程读写安全的无锁循环队列,供组件进行缓存区管理,其中组件为管理缓存区提供两个接口,其中一个接口用于申请缓存区,另一个接口用于在缓存区中的数据落地后将缓存区回收至无锁队列中,组件为一个打点标识参数申请一个tag_cache指针数组,每次该打点标识参数处的打点接口被调用时,若打点标识参数对应的tag_cache指针数组还没有被回收,则直接返回之前的tag_cache指针数组,否则从无锁队列中获取新的缓存区。根据本专利技术的应用层延时数据异步打点采集组件的一实施例,组件配置为执行以下的打点标识参数打点的流程:打点接口被调用后,首先根据打点标识参数获取之前分配的tag_cache指针数组,若获取不成功,并对于该打点标识参数首次被应用的情况,则从无锁队列中获取一个新的缓存区给当前的打点标识参数使用,直到落地并被回收。获取到tag_cache指针数组后,则在缓存区中记录本次标识信息,当该tag_cache指针数组的缓存区满后或者距离上次操作该tag_cache指针数组时间已经超过一设定值,则进行写文件操作,将该tag_cache指针数组中所有的标识信息写入到指定的文件中,并且将该tag_cach指针数组回收供下一次分配。本专利技术对比现有技术有如下的有益效果:第一,本专利技术的应用接口单一极简,使用成本极小,共有两个接口,其中一个是启动设置指定日志文件,另一个是打点接口。对使用者来说极其便利,不需要考虑内部的实现细节。第二,本专利技术可支持任意无缝使用,对开发者友好,应用层可以在程序的任何需要打点的地方进行调用打点接口进行打点记录,组件自动记录tag_id、guid、当前时间,并在合适的时间落入到应用层指定的文件。第三,本专利技术能够最大程度降低打点带来的性能开销(两万多次打点会有一次无锁队列的请求开销,同时打印记录全部异步输出),不管是跨进程或者进程内所有的有延时统计需求的程序,都需尽可能减少因为打点或者统计所耗的时间,本专利技术可以最大程度的保证业务延时的精确度。第四,本专利技术中的应用层的每条请求都可以记录延时,便于统计异常数据;同时对于二次分析友好,三个字段的csv格式存储,便于excel或python等语言二次分析。附图说明在结合以下附图阅读本公开的实施例的详细描述之后,能够更好地理解本专利技术的上述特征和优点。在附图中,各组件不一定是按比例绘制,并且具有类似的相关特性或特征的组件可能具有相同或相近的附图标记。图1示出了本专利技术的应用层延时数据异步打点采集组件的一实施例的接口示意图。图2示出了本专利技术的应用层延时数据异步打点采集组件的一实施例的类图。图3示出了图2所示的tag_write类管理和分配tag_cache指针数组的示意图。图4示出了图2所示的tag_cache指针数组管理的流程图。图5示出了图2所示的tag打点的主要流程图。具体实施方式以下结合附图和具体实施例对本专利技术作详细描述。注意,以下结合附图和具体实施例描述的诸方面仅是示例性的,而不应被理解为对本专利技术的保护范围进行任何限制。本实施例的应用层延时数据异步打点采集组件的打点参数分别为:tag_id、guid、time。其中,tag_id是16位整型,是打点标识的参数,用于标识程序打点的位置,由用户自己定义。guid是64位整本文档来自技高网...
【技术保护点】
1.一种应用层延时数据异步打点采集组件,其特征在于,组件包括:/n两个应用接口,分别是在入口处执行的初始化接口和在每一程序模块的入口和出口调用的打点接口,其中初始化接口用于包括启动设置指定日志文件在内的初始化工作,打点接口用于应用层在所需打点记录的地方进行调用以进行打点跟踪;/n存储模块,用于存储以三个参数字段的CSV格式文件进行二次计算和统计,其中该三个参数字段包括打点标识参数、全局用户身份证明参数、时间参数,其中打点标识参数用于标识程序打点的位置,全局用户身份证明参数用于标记业务消息或者配置操作的一个完整的生命周期的标识符,时间参数用于记录打点时刻。/n
【技术特征摘要】
1.一种应用层延时数据异步打点采集组件,其特征在于,组件包括:
两个应用接口,分别是在入口处执行的初始化接口和在每一程序模块的入口和出口调用的打点接口,其中初始化接口用于包括启动设置指定日志文件在内的初始化工作,打点接口用于应用层在所需打点记录的地方进行调用以进行打点跟踪;
存储模块,用于存储以三个参数字段的CSV格式文件进行二次计算和统计,其中该三个参数字段包括打点标识参数、全局用户身份证明参数、时间参数,其中打点标识参数用于标识程序打点的位置,全局用户身份证明参数用于标记业务消息或者配置操作的一个完整的生命周期的标识符,时间参数用于记录打点时刻。
2.根据权利要求1所述的应用层延时数据异步打点采集组件,其特征在于,初始化接口和打点接口是通过一异步组件实现的C++类来提供,异步组件实现的C++类还包含两个组件:tag_cache指针数组和tag_writer类,其中tag_cache指针数组用于存放打点标识参数对应的缓存区指针,缓存区用于容纳打点记录,其中每一个打点记录是消息体,消息体包含三个成员,分别是CSV格式文件中的三个参数字段,tag_writer类用于日志落地、缓存区管理和线程启动。
3.根据权利要求2所述的应用层延时数据异步打点采集组件,其特征在于,组件配置为执行以下的tag_cache指针数组的管理流程:
在应用程序中,不同的打点处使用不同的打点标识参数,组件将同一个打点标识参数所对应的节点记录保存在同一个tag_cache指针数组中,直到该tag...
【专利技术属性】
技术研发人员:张海荣,张勇,方义,
申请(专利权)人:上海金融期货信息技术有限公司,
类型:发明
国别省市:上海;31
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。