非侵入式运行监测方法技术

技术编号:39723405 阅读:8 留言:0更新日期:2023-12-17 23:28
本发明专利技术提出了一种非侵入式运行监测方法

【技术实现步骤摘要】
非侵入式运行监测方法、装置、电子设备及存储介质


[0001]本专利技术涉及软件监测
,具体涉及一种非侵入式运行监测方法

装置

电子设备及存储介质


技术介绍

[0002]C++
微服务是一种基于
C++
语言开发的微服务架构,利用
C++
的高性能和低延迟特性,将大型应用程序拆分为小型

自治的服务,以实现更好的灵活性

可伸缩性和性能


C++
微服务架构中,进行非侵入式运行监测是非常必要的:一方面,微服务架构中的每个微服务都是独立运行的,当出现故障或问题时,需要能够快速定位并解决

另一方面,在微服务架构中,可观测性是确保系统的稳定性和可靠性的关键因素,需要收集和分析微服务的监控指标

日志和事件数据,以提供全面的系统状态和健康状况的可视化展示

此外,性能是微服务架构的关键指标之一,需要收集微服务的性能数据,如请求延迟

吞吐量

资源利用率等,用于识别性能瓶颈,并进行相应的优化,以提高微服务的响应性能和系统的可伸缩性

[0003]现有
C++
微服务的侵入式运行监测存在的问题

[0004]非侵入式运行监测技术是一种软件开发中常用的技术手段,通过代理模式

钩子函数
、AOP
和动态代理等机制实现对系统的运行时监测,能够提供有效的系统监控和数据收集,同时又不对现有系统造成任何破坏性的改变,避免了因修改代码而引入新的风险和问题,适用于各种软件架构和开发语言,可以应用于不同类型的系统和应用场景


技术实现思路

[0005]有鉴于此,本专利技术提出了一种非侵入式运行监测方法

装置

电子设备及存储介质,能够在
C++
语言开发的微服务架构下,通过扩展监测逻辑而无需修改已有的业务逻辑代码,对微服务是透明无侵入的,便于添加新功能

[0006]为实现上述目的,本专利技术的技术方案为:一种非侵入式运行监测方法,包括如下步骤:步骤1,对于
C++
插件式应用框架,将报文从代理处拦截;步骤2,报文拦截代理拦截报文后,使用
C++
插件框架自描述字典协议进行报文解析,解析过程涉及定义字典

编码报文和解码报文;其中,根据具体需求定义字典的内容,确保它能够覆盖报文中可能出现的所有数据类型和字段;字典中的字段使用基于四元组的报文唯一标识技术进行标识;每个报文均由报文类型

调用请求根
ID、
调用请求父
ID、
调用请求
ID
进行标识,报文唯一标识逐级递归,形成由若干父子标识节点组成的多级树状调用链,在监控界面中展现;步骤3,将报文以异步的方式交给运行监控处理线程池处理;步骤4,服务运行状态处理分析,具体如下:运行监控处理线程池基于报文唯一标识

报文的类型对报文进行监测;基于服务
调用链信息对服务消费延时情况

服务消费并发情况

服务提供并发访问情况进行统计,对服务运行产生的异常情况和服务进程运行状态进行捕获,最终形成服务综合运行状态并将微服务运行状态定期上报

[0007]其中,所述步骤2中,解析过程具体如下:(1)定义字典:创建一个字典,这个字典包含所有可能出现的数据类型和字段名;(2)编码报文:将拦截到的报文与字典中的字段进行匹配;根据字段的编码规则将报文中的数据转换成相应的编码形式,并关联到对应的字段标识符,将编码后的数据组织成最终的编码报文;(3)解码报文:将接收到的编码报文与字典中的字段进行匹配;根据字段的解码规则将编码报文中的编码数据还原为原始数据,并关联到对应的字段标识符,将解码后的数据组织成最终的解码报文;其中,
C++
插件框架自描述字典协议通过匹配字段

转换数据和关联标识符,实现报文数据的编码和解码,使其能够被处理和使用

[0008]其中,所述步骤1中,采用线程池技术对报文进行拦截;在微服务中,使用线程池技术来管理接收到的请求并分配给可用的线程进行处理;线程池维护一个任务队列,当有新的任务到达时,将任务添加到队列中,并从线程池中获取空闲的线程来执行任务;当任务执行完毕后,线程将返回线程池以供其他任务使用

[0009]其中,服务消费延时统计方法具体如下:

定义起始时间点:确定起始时间点,以用户发出服务请求的时间或者服务开始处理的时间点为起始时间点;

定义结束时间点:确定结束时间点以服务请求完成的时间或者服务处理完全的时间点为结束时间点;

计算延时时间:计算起始时间点与结束时间点两个时间点之间的差值得出;

记录延时时间:将每个服务请求的延时时间记录下来;

汇总和分析数据:对所有记录的延时时间进行汇总和分析

[0010]其中,服务消费并发统计方法具体如下:

选择时间段:确定要进行并发统计的时间段;

记录请求发生时间:在所选时间段内,记录每个服务请求的发生时间;使用当前系统时间或者服务请求到达服务器的时间作为发生时间点;

统计并发请求数:对于所选时间段内的每个时间点,计算该时间点内发生的服务请求数量;

找到最高并发请求数:从所有时间点中找到具有最高并发请求数的时间点;

分析并发趋势:根据记录的数据,进行并发趋势分析,计算平均并发请求数和峰值并发请求数

[0011]其中,服务提供并发统计方法具体如下:

选择时间段:确定要进行并发统计的时间段;

记录请求处理时间:在所选时间段内,记录每个服务请求的开始处理时间和结束处理时间;

统计并发请求数:对于所选时间段内的每个时间点,计算该时间点内正在被处理的服务请求数量,在任何给定的时间点上,如果开始处理时间早于或等于该时间点,并且
结束处理时间晚于或等于该时间点,则认为该服务请求在该时间点内正在被处理;

找到最高并发请求数:从所有时间点中找到具有最高并发请求数的时间点;

分析并发趋势:根据记录的数据,进行并发趋势分析,计算平均并发请求数和峰值并发请求数

[0012]其中,服务异常状态监测方法具体如下:

定义异常状态:确定哪些状态被认为是异常的;

设定监测频率:确定监测的频率,即多久进行一次状态检查;
③<本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.
一种非侵入式运行监测方法,其特征在于,包括如下步骤:步骤1,对于
C++
插件式应用框架,将报文从代理处拦截;步骤2,报文拦截代理拦截报文后,使用
C++
插件框架自描述字典协议进行报文解析,解析过程涉及定义字典

编码报文和解码报文;其中,根据具体需求定义字典的内容,确保它能够覆盖报文中可能出现的所有数据类型和字段;字典中的字段使用基于四元组的报文唯一标识技术进行标识;每个报文均由报文类型

调用请求根
ID、
调用请求父
ID、
调用请求
ID
进行标识,报文唯一标识逐级递归,形成由若干父子标识节点组成的多级树状调用链,在监控界面中展现;步骤3,将报文以异步的方式交给运行监控处理线程池处理;步骤4,服务运行状态处理分析,具体如下:运行监控处理线程池基于报文唯一标识

报文的类型对报文进行监测;基于服务调用链信息对服务消费延时情况

服务消费并发情况

服务提供并发访问情况进行统计,对服务运行产生的异常情况和服务进程运行状态进行捕获,最终形成服务综合运行状态并将微服务运行状态定期上报
。2.
如权利要求1所述的方法,其特征在于,所述步骤2中,解析过程具体如下:(1)定义字典:创建一个字典,这个字典包含所有可能出现的数据类型和字段名;(2)编码报文:将拦截到的报文与字典中的字段进行匹配;根据字段的编码规则将报文中的数据转换成相应的编码形式,并关联到对应的字段标识符,将编码后的数据组织成最终的编码报文;(3)解码报文:将接收到的编码报文与字典中的字段进行匹配;根据字段的解码规则将编码报文中的编码数据还原为原始数据,并关联到对应的字段标识符,将解码后的数据组织成最终的解码报文;其中,
C++
插件框架自描述字典协议通过匹配字段

转换数据和关联标识符,实现报文数据的编码和解码,使其能够被处理和使用
。3.
如权利要求1或2所述的方法,其特征在于,所述步骤1中,采用线程池技术对报文进行拦截;在微服务中,使用线程池技术来管理接收到的请求并分配给可用的线程进行处理;线程池维护一个任务队列,当有新的任务到达时,将任务添加到队列中,并从线程池中获取空闲的线程来执行任务;当任务执行完毕后,线程将返回线程池以供其他任务使用
。4.
如权利要求1或2所述的方法,其特征在于,服务消费延时统计方法具体如下:

定义起始时间点:确定起始时间点,以用户发出服务请求的时间或者服务开始处理的时间点为起始时间点;

定义结束时间点:确定结束时间点以服务请求完成的时间或者服务处理完全的时间点为结束时间点;

计算延时时间:计算起始时间点与结束时间点两个时间点之间的差值得出;

记录延时时间:将每个服务请求的延时时间记录下来;

汇总和分析数据:对所有记录的延时时间进行汇总和分析
。5.
如权利要求1或2所述的方法,其特征在于,服务消费并发统计方法具体如下:

选择时间段:确定要进行并发统计的时间段;

记录请求发生时间:在所选时间段内,记录每个服务请求的发生时间;使用当前系统时间或者服务请求到达服务器的时间作为发生时间点;

统计并发请求数:对于所选时间段内的每个时间点,计算该时间点内发生的服务请求数量;

找到最高并发请求数:从所有时间点中找到具有最高并发请求数的时间点;

分析并发趋势:根据记录的数据,进行并发趋势分析,计算...

【专利技术属性】
技术研发人员:焦港欣唐稳王弈宸王强王峰王福喜
申请(专利权)人:中国电子科技集团公司第十五研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1