非侵入式运行监测方法、装置、电子设备及存储介质与流程

文档序号:36339463发布日期:2023-12-13 18:45阅读:30来源:国知局
非侵入式运行监测方法与流程

本发明涉及软件监测,具体涉及一种非侵入式运行监测方法、装置、电子设备及存储介质。


背景技术:

1、c++微服务是一种基于c++语言开发的微服务架构,利用c++的高性能和低延迟特性,将大型应用程序拆分为小型、自治的服务,以实现更好的灵活性、可伸缩性和性能。在c++微服务架构中,进行非侵入式运行监测是非常必要的:一方面,微服务架构中的每个微服务都是独立运行的,当出现故障或问题时,需要能够快速定位并解决。另一方面,在微服务架构中,可观测性是确保系统的稳定性和可靠性的关键因素,需要收集和分析微服务的监控指标、日志和事件数据,以提供全面的系统状态和健康状况的可视化展示。此外,性能是微服务架构的关键指标之一,需要收集微服务的性能数据,如请求延迟、吞吐量、资源利用率等,用于识别性能瓶颈,并进行相应的优化,以提高微服务的响应性能和系统的可伸缩性。

2、现有c++微服务的侵入式运行监测存在的问题。

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


技术实现思路

1、有鉴于此,本发明提出了一种非侵入式运行监测方法、装置、电子设备及存储介质,能够在c++语言开发的微服务架构下,通过扩展监测逻辑而无需修改已有的业务逻辑代码,对微服务是透明无侵入的,便于添加新功能。

2、为实现上述目的,本发明的技术方案为:

3、一种非侵入式运行监测方法,包括如下步骤:

4、步骤1,对于c++插件式应用框架,将报文从代理处拦截;

5、步骤2,报文拦截代理拦截报文后,使用c++插件框架自描述字典协议进行报文解析,解析过程涉及定义字典、编码报文和解码报文;

6、其中,根据具体需求定义字典的内容,确保它能够覆盖报文中可能出现的所有数据类型和字段;字典中的字段使用基于四元组的报文唯一标识技术进行标识;每个报文均由报文类型、调用请求根id、调用请求父id、调用请求id进行标识,报文唯一标识逐级递归,形成由若干父子标识节点组成的多级树状调用链,在监控界面中展现;

7、步骤3,将报文以异步的方式交给运行监控处理线程池处理;

8、步骤4,服务运行状态处理分析,具体如下:

9、运行监控处理线程池基于报文唯一标识、报文的类型对报文进行监测;基于服务调用链信息对服务消费延时情况、服务消费并发情况、服务提供并发访问情况进行统计,对服务运行产生的异常情况和服务进程运行状态进行捕获,最终形成服务综合运行状态并将微服务运行状态定期上报。

10、其中,所述步骤2中,解析过程具体如下:

11、(1)定义字典:创建一个字典,这个字典包含所有可能出现的数据类型和字段名;

12、(2)编码报文:将拦截到的报文与字典中的字段进行匹配;根据字段的编码规则将报文中的数据转换成相应的编码形式,并关联到对应的字段标识符,将编码后的数据组织成最终的编码报文;

13、(3)解码报文:将接收到的编码报文与字典中的字段进行匹配;根据字段的解码规则将编码报文中的编码数据还原为原始数据,并关联到对应的字段标识符,将解码后的数据组织成最终的解码报文;其中,c++插件框架自描述字典协议通过匹配字段、转换数据和关联标识符,实现报文数据的编码和解码,使其能够被处理和使用。

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

15、其中,服务消费延时统计方法具体如下:

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

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

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

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

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

21、其中,服务消费并发统计方法具体如下:

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

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

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

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

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

27、其中,服务提供并发统计方法具体如下:

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

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

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

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

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

33、其中,服务异常状态监测方法具体如下:

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

35、②设定监测频率:确定监测的频率,即多久进行一次状态检查;

36、③编写监测脚本或规则:根据所选的异常状态指标,编写一个脚本或规则来执行异常状态监测操作;

37、④执行状态监测:按照设定的监测频率,定期执行异常状态监测脚本或规则,并记录每次监测得到的异常状态数据;

38、⑤报警和处理:当监测到异常状态时,及时触发报警机制,通知相关的运维团队或管理人员;随后,根据预先设定的处理流程,进行相应的故障排查和修复操作;

39、⑥分析和改进:对记录的异常状态数据进行分析;

40、服务进程状态监测方法具体如下:

41、①选择监测指标:确定要监测的关键指标,包括进程是否在运行、cpu使用率、内存占用和网络连接数;

42、②设定监测频率:确定监测的频率,即多久进行一次状态检查;

43、③编写监测脚本:根据所选的监测指标,编写一个脚本来执行状态监测操作;

44、④执行状态监测:按照设定的监测频率,定期执行监测脚本,并记录每次监测得到的状态数据,将状态数据保存到数据库中;

45、⑤分析状态数据:对记录的状态数据进行分析,通过统计和可视化技术来理解服务进程的运行情况。

46、本发明还提供了一种非侵入式运行监测装置,包括报文拦截模块、报文协议解析模块、运行监控处理线程池以及微服务运行状态上报模块;其中,报文拦截模块对进入微服务和微服务发出的请求与应答报文进行拦截,并传输给报文协议解析模块;报文协议解析模块对所拦截的报文进行上下文标识、报文格式解析,并将报文以异步的方式交给运行监控处理线程池处理;运行监控处理线程池基于调用链进行服务运行状态统计,统计结果包括服务消费并发情况、延时情况、服务提供并发情况、服务异常情况和服务进程监测,最终形成服务综合运行状态并传输给微服务运行状态上报模块;微服务运行状态上报模块将所得到的运行状态进行存储及上报。

47、本发明还提供了一种电子设备,所述电子设备包括处理器、用于存储所述处理器可执行指令的存储器;所述处理器,用于从所述存储器中读取所述可执行指令,并执行所述指令以实现本发明所述的非侵入式运行监测方法。

48、本发明还提供了一种计算机可读存储介质,所述存储介质存储有计算机程序,所述计算机程序用于执行本发明所述的非侵入式运行监测方法。

49、有益效果

50、1、本发明方法中,微服务主动发出的请求和应答报文,以及接收到的外部请求和应答报文均会经过c++微服务运行框架的运行监测层,运行监测层拦截分析处理,最终形成微服务运行状态定期上报,由此可以看出,微服务自身并没有参与状态的收集、分析和上报过程,当需要引入新的监测功能时,可以通过扩展监测逻辑而无需修改已有的业务逻辑代码,所以运行监测对微服务是透明无侵入、便于添加新功能。c++微服务非侵入式运行监测技术通过高性能、无编码侵入、灵活的规则定义和方便添加新功能等优势,使得它在某些场景下相比于istio和dapr更具竞争力。

51、2、本发明方法优选实施方式中,在c++微服务架构中,通过非侵入式运行监测,实时收集微服务的关键指标,能够助力开发人员快速定位问题,并进行故障排查;收集微服务的性能数据,如请求延迟等,用于健康状况的可视化展示、性能瓶颈识别,以提高微服务的响应性能和系统的可伸缩性。

52、3、本发明方法优选实施方式中,在报文解析、标识了报文后,将报文以异步的方式交给运行监控处理线程池处理。当有请求到达时,系统将其转化为一个事件,并将事件发送到相应的事件队列中。事件队列中的事件将被异步处理器或回调函数处理,允许主线程继续处理其他任务而无需等待事件的完成。异步处理器或回调函数通常在独立的线程或线程池中执行,以避免阻塞主线程,同时将监控处理对报文处理速度的影响降低到最小。

53、4、本发明装置中,微服务主动发出的请求和应答报文,以及接收到的外部请求和应答报文均会经过c++微服务运行框架的运行监测层,运行监测层拦截分析处理,最终形成微服务运行状态定期上报,由此可以看出,微服务自身并没有参与状态的收集、分析和上报过程,当需要引入新的监测功能时,可以通过扩展监测逻辑而无需修改已有的业务逻辑代码,所以运行监测对微服务是透明无侵入、便于添加新功能。c++微服务非侵入式运行监测技术通过高性能、无编码侵入、灵活的规则定义和方便添加新功能等优势,使得它在某些场景下相比于istio和dapr更具竞争力。

54、5、本发明电子设备中,微服务主动发出的请求和应答报文,以及接收到的外部请求和应答报文均会经过c++微服务运行框架的运行监测层,运行监测层拦截分析处理,最终形成微服务运行状态定期上报,由此可以看出,微服务自身并没有参与状态的收集、分析和上报过程,当需要引入新的监测功能时,可以通过扩展监测逻辑而无需修改已有的业务逻辑代码,所以运行监测对微服务是透明无侵入、便于添加新功能。c++微服务非侵入式运行监测技术通过高性能、无编码侵入、灵活的规则定义和方便添加新功能等优势,使得它在某些场景下相比于istio和dapr更具竞争力。

55、6、本发明存储介质中,在报文解析、标识了报文后,将报文以异步的方式交给运行监控处理线程池处理。当有请求到达时,系统将其转化为一个事件,并将事件发送到相应的事件队列中。事件队列中的事件将被异步处理器或回调函数处理,允许主线程继续处理其他任务而无需等待事件的完成。异步处理器或回调函数通常在独立的线程或线程池中执行,以避免阻塞主线程,同时将监控处理对报文处理速度的影响降低到最小。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1