CN117785609A - 一种基于分布式的多线程监控及自动调度的方法 - Google Patents
一种基于分布式的多线程监控及自动调度的方法 Download PDFInfo
- Publication number
- CN117785609A CN117785609A CN202311800341.2A CN202311800341A CN117785609A CN 117785609 A CN117785609 A CN 117785609A CN 202311800341 A CN202311800341 A CN 202311800341A CN 117785609 A CN117785609 A CN 117785609A
- Authority
- CN
- China
- Prior art keywords
- thread
- lock
- distributed
- monitoring
- service center
- 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
- 238000012544 monitoring process Methods 0.000 title claims abstract description 52
- 238000000034 method Methods 0.000 title claims abstract description 37
- 230000008569 process Effects 0.000 claims abstract description 5
- 230000002159 abnormal effect Effects 0.000 claims description 12
- 230000001680 brushing effect Effects 0.000 claims description 11
- 238000012360 testing method Methods 0.000 claims description 10
- 230000005059 dormancy Effects 0.000 claims description 6
- 230000005856 abnormality Effects 0.000 claims description 3
- 230000003139 buffering effect Effects 0.000 claims 1
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 230000007547 defect Effects 0.000 abstract description 2
- 230000006870 function Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 230000004044 response Effects 0.000 description 1
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提出一种基于分布式的多线程监控及自动调度的方法,针对现有分布式多线程监控的不足,提出基于分布式锁服务及线程注册中心的方式来监控及调度多线程。具有以下有益效果:高可用性和可靠性:分布式多线程监控能够处理节点或现场故障,即使一个线程发生了故障,其他线程可以继续工作,确保应用不中断。系统快速恢复:线程监控系统可以自动识别线程发生的问题并立即采取必要措施,如重启系统、分配资源或调整配置,自动恢复系统正常运行。降低人工干预:多线程监控技术可以根据监控数据自动化决策并触发操作,减少人工干预,降低了人为错误风险。高系统拓展性:分布式多线程监控系统能够水平拓展以支持更多的组件和线程,适应系统的增长需求。
Description
技术领域
本发明涉及分布式多线程处理技术领域,具体涉及一种基于分布式的多线程监控及自动调度的方法。
背景技术
随着现代软件系统规模日益增长,对于分布式多线程技术应用愈发广泛,与此同时,人们对于分布式多线程的监控需求也日趋增长。目前基于日志、网络等成熟监控方法比较多,但大多都是针对线程原因特定场景设计的,同时仅能满足监控需求,系统发生故障时,通常需要运维人工去处理,效率较低。因此,缺乏一种能够有效监控多线程,且能够在线程故障时自动调度可用线程保障业务稳定的监控系统。
目前监控线程主要有以下几个方法:
1、基于可用性管理器来监控线程状态。例如:CN103246589A-一种多线程的监控方法及装置。
该方法通过使用全局可用性管理器来监控本地可用性管理的运行状态,通过判断其运行状态,来对其进行监控及运行恢复。该方法监控主要通过全局可用性管理器来监控发现,当该管理器发生故障时,导致无法有效获取到本地管理器的状态,同时在本地管理器数据增多时,会造成全局管理器负载较高,影响监控效率。
2、通过监控线程来采集其他线程的状态。例如:CN1295612C-一种多线程系统中实现实时监控各线程状态的方法。
该方法将监控线程与被监控线程捆绑在一个进程中,通过监控与被监控线程之间互相发送消息来完成线程监控,但此方法无法应用在分布式多线程场景下。
发明内容
本发明需要解决的问题是:现有的多线程监控系统主要应用于单机应用环境,而且线程故障需要人工来处理。
为了解决上述问题,本发明的技术方案是提供了一种基于分布式的多线程监控及自动调度的方法,包括分布式线程配置注册中心、分布式锁服务中心、通用线程组件以及多线程监控系统,所述方法包括以下步骤:
步骤1:分布式线程配置注册中心获取来自线程配置注册页的线程配置信息,并保存至数据库,线程配置信息包括线程名称、应用名称、主线程刷锁间隔、备用线程刷锁间隔、线程超时时间;
步骤2:分布式线程配置注册中心在分布式锁服务中心注册保存线程锁信息,线程锁信息包括线程名、实例id以及刷新时间;
步骤3:业务系统中的线程继承通用线程组件,重写业务方法并在类构造器中指定线程名称;
步骤4:当系统启动时,测试当前系统与分布式线程配置注册中心和分布式锁服务中心之间的连通性,当前系统与分布式线程配置注册中心和分布式锁服务中心之间连通时,线程启动;
步骤5:当线程启动时,根据线程名称调用分布式线程配置注册中心,获取线程配置信息并缓存在系统内存中;
步骤6:获取到配置信息后,尝试进行线程抢锁;线程内部通过线程配置信息调用分布式锁服务中心接口,尝试抢锁,得到分布式锁服务中心抢锁返回的结果;
步骤7:根据锁服务中心抢锁返回的结果,标识当前线程为主线程或备用线程,如果是主线程,则执行线程业务逻辑,如果是备用线程,则进行线程休眠,休眠时间间隔为配置的备用线程刷锁间隔;
步骤8:线程定期抢锁,主线程抢锁时间间隔为配置的主线程刷锁间隔,备用线程抢锁时间间隔为配置的备用线程刷锁间隔;
步骤9:当主线程发生故障时,根据步骤6和步骤7将备用线程自动调度为主线程;
步骤10:主动调用或定期通过通用线程组件刷新心跳;
步骤11:线程定期去分布式锁服务中心汇报心跳;
步骤12:多线程监控系统获取当前分布式线程配置注册中心中所有的线程配置信息,包括线程名称、线程超时时间;多线程监控系统获取当前分布式锁服务中心的所有心跳汇报记录,并按线程名称分组;根据线程配置的超时时间与线程各应用实例的最新一次心跳刷新时间做对比,时间间隔大于超时时间的,则判定为线程状态异常,如果小于,则判定为线程状态正常;按线程名称分组汇总状态异常的线程;
步骤13:对于状态异常的线程进行分析;如果该线程没有配置报警忽略进行监控报警,如果配置了报警忽略,则不报警。
优选地,所述分布式线程配置注册中心通过RPC接口调用方式在分布式锁服务中心注册保存线程锁信息。
优选地,所述测试当前系统与分布式线程配置注册中心和分布式锁服务中心之间的连通性,包括以下步骤:
系统通过RPC接口调用方式调用分布式线程配置注册中心测试接口,如果返回异常,则抛出链接异常,启动失败,终止调用分布式锁服务中心;
如果返回正常,则链路通畅;系统通过RPC接口调用方式调用分布式锁服务中心测试接口,如果返回正常,则链路通畅,线程启动;
如果返回异常,则抛出链接异常,启动失败,终止流程。
优选地,所述获取线程配置信息并缓存在系统内存中,包括以下步骤:
如果查询到配置信息,则返回配置信息;
如果在分布式线程配置注册中心没有查询到配置信息,则返回空值,并抛出异常,线程启动失败,终止流程。
优选地,所述抢锁包括以下步骤:
首先开始抢锁事务,根据线程名查询锁信息,如果查询到锁未被占用,则表示可以抢锁,更新锁信息中的实例id、刷新时间,返回抢锁成功,结束流程;如果查询到该锁已被占用,则根据线程超时时间、锁刷新时间判断锁是否超时,如果超时,则执行新锁信息中的实例id、刷新时间,返回抢锁成功,结束流程;如果不超时,返回抢锁失败,结束流程;
提交抢锁事务;
分布式锁服务中心返回抢锁结果,结束流程。
优选地,所述通用线程组件刷新心跳包括以下步骤:
线程内部根据线程名称、应用实例id通过RPC接口调用方式调用分布式锁服务中心刷新方法,尝试汇报心跳;
将锁信息中的线程名称、应用实例id以及汇报时间记录到分布式锁服务中心;
如果记录成功,则汇报成功;如记录失败,则汇报失败;结束心跳刷新流程。
优选地,所述线程定期去分布式锁服务中心汇报心跳中,主线程自动刷新心跳的时间间隔为配置的主线程刷锁间隔;备用线程自动刷新心跳的时间间隔为配置的备用线程刷锁间隔。
本发明的技术方案提出一种基于分布式的多线程监控及自动调度的方法,针对现有分布式多线程监控的不足,提出基于分布式锁服务及线程注册中心的方式来监控及调度多线程。
附图说明
图1为技术方案结构图;
图2为主线程切换流程图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
本发明出现的相关术语及概念,如下所示:
主备线程:主线程为抢到线程锁且真正执行业务方法的线程;备线程为未抢到线程锁且定期尝试抢锁的线程。
主线程刷锁间隔:主线程定期去分布式锁服务中心刷新锁的时间间隔。
备用线程刷锁间隔:备用线程定期去分布式锁服务中心尝试获取锁的时间间隔。
线程超时时间:线程锁刷新允许的最大时间间隔。
在本实施例中,一种基于分布式的多线程监控及自动调度的装置包括:
一个分布式线程配置注册中心,简称注册中心,用于给每一个线程进行信息配置,信息存储在Mysql数据库中。配置信息包括:线程名称、应用名称、主线程刷锁间隔、备用线程刷锁间隔、线程超时时间等用于系统监控和调度策略。
一个分布式锁服务中心,简称锁服务中心,用于主备线程切换、线程心跳数据刷新,支持Zookeeper、Redis配置的分布式锁服务中心。
一个通用线程组件,用于线程基础功能实现、抢锁、上报心跳、自动接入监控等功能。
一个多线程监控系统,简称监控系统,用于监控每个线程是否存活,并根据存活状态给出响应的监控报警信息。
具体包含如下步骤:
新建线程配置信息,需要手动将线程名称、应用名称、主线程刷锁间隔、备用线程刷锁间隔、线程超时时间等信息通过线程配置注册页面提交到注册中心。
注册中心将提交的信息,保存在数据库中。
注册中心通过RPC接口调用方式在锁服务中心注册保存一个线程锁信息,锁信息包含线程名、实例id(初始化为空)、刷新时间(初始化为空)。
业务系统中的线程都继承通用线程组件,重写业务方法并在类构造器中指定线程名称,用于在系统中标识该线程。
系统启动时,测试当前系统与注册中心、锁服务中心连通性,确保链路通畅。详细步骤如下:系统通过RPC的方式调用分布式线程配置注册中心测试接口;如果返回正常,则链路通畅;如果返回异常,则抛出链接异常,启动失败,终止以下流程。系统通过RPC的方式调用分布式锁服务中心测试接口;如果返回正常,则链路通畅;如果返回异常,则抛出链接异常,启动失败。
线程启动时,根据类构造器中的线程名称通过RPC远程调用去注册中心获取该线程的配置信息(主线程刷锁间隔、备用线程刷锁间隔、线程超时时间)并缓存在系统内存中。详细步骤如下:如果查询到配置信息,则返回配置信息。如果在分布式线程配置注册中心没有查询到配置信息,则返回空值,并抛出异常,线程启动失败,终止以下流程。
获取到配置信息后,尝试进行线程抢锁。线程内部通过线程名称、应用实例id、线程超时时间通过RPC方式调用锁服务中心接口,尝试抢锁。抢锁详细步骤如下:首先开始抢锁事务,根据线程名查询锁信息。并进入判断流程:如果查询到该锁未被占用,则表示可以抢锁。更新锁信息中的实例id、刷新时间,返回抢锁成功,结束流程。如果查询到该锁已被占用,则根据线程超时时间、锁刷新时间判断该锁是否超时。如果超时,则执行更新锁信息中的实例id、刷新时间,返回抢锁成功,结束流程。如果不超时,返回抢锁失败,结束流程。提交抢锁事务;锁服务中心返回抢锁结果,结束流程。
应用实例线程根据锁服务中心抢锁返回的结果,标识当前线程为主线程或备用线程。如果是主线程,则执行线程业务逻辑,如果是备用线程,则进行线程休眠,休眠时间间隔为配置的备用线程刷锁间隔。
线程定期抢锁,主线程抢锁时间间隔为配置的主线程刷锁间隔,备用线程抢锁时间间隔为配置的备用线程刷锁间隔。
备用线程通过定期抢锁机制,通过流程7、8,可以将备用线程自动调度为主线程,实现了在主线程发生故障时,线程的自动调度切换功能。
线程心跳上报。通用线程组件提供刷新心跳的方法,可以主动调用,也可以由线程组件定期刷新心跳。刷新心跳详细步骤如下:线程内部通过线程名称、应用实例id通过RPC调用锁服务中心刷新方法,尝试汇报心跳。将线程名称、应用实例id、汇报时间记录到锁服务中心。如果记录成功,则汇报成功;如记录失败,则汇报失败;结束心跳刷新流程。
线程定期去锁服务中心汇报心跳。其中自动刷新心跳的时间间隔为:主线程为配置的主线程刷锁间隔,备用线程为配置的备用线程刷锁间隔。
监控系统每分钟去检查线程的心跳汇报状态。详细步骤如下:监控系统获取当前注册中心中所有的线程配置信息,包括线程名称、线程超时时间。监控系统获取当前锁中心的所有心跳汇报记录,并按线程名称分组。根据线程配置的超时时间与线程各应用实例的最新一次心跳刷新时间做对比,时间间隔大于超时时间的,则判定为线程状态异常,如果小于,则判定为线程状态正常。按线程名称分组汇总状态异常的线程。
对于状态异常的线程进行分析。如果该线程没有配置报警忽略进行监控报警,如果配置了报警忽略,则不报警。
本发明实施例的有益效果是:
1)高可用性和可靠性:分布式多线程监控能够处理节点或现场故障,即使一个线程发生了故障,其他线程可以继续工作,确保应用不中断。
2)系统快速恢复:线程监控系统可以自动识别线程发生的问题并立即采取必要措施,如重启系统、分配资源或调整配置,自动恢复系统正常运行。
3)降低人工干预:多线程监控技术可以根据监控数据自动化决策并触发操作,减少人工干预,降低了人为错误风险。
4)高系统拓展性:分布式多线程监控系统能够水平拓展以支持更多的组件和线程,适应系统的增长需求。
Claims (7)
1.一种基于分布式的多线程监控及自动调度的方法,其特征在于,包括分布式线程配置注册中心、分布式锁服务中心、通用线程组件以及多线程监控系统,所述方法包括以下步骤:
步骤1:分布式线程配置注册中心获取来自线程配置注册页的线程配置信息,并保存至数据库,线程配置信息包括线程名称、应用名称、主线程刷锁间隔、备用线程刷锁间隔、线程超时时间;
步骤2:分布式线程配置注册中心在分布式锁服务中心注册保存线程锁信息,线程锁信息包括线程名、实例id以及刷新时间;
步骤3:业务系统中的线程继承通用线程组件,重写业务方法并在类构造器中指定线程名称;
步骤4:当系统启动时,测试当前系统与分布式线程配置注册中心和分布式锁服务中心之间的连通性,当前系统与分布式线程配置注册中心和分布式锁服务中心之间连通时,线程启动;
步骤5:当线程启动时,根据线程名称调用分布式线程配置注册中心,获取线程配置信息并缓存在系统内存中;
步骤6:获取到配置信息后,尝试进行线程抢锁;线程内部通过线程配置信息调用分布式锁服务中心接口,尝试抢锁,得到分布式锁服务中心抢锁返回的结果;
步骤7:根据锁服务中心抢锁返回的结果,标识当前线程为主线程或备用线程,如果是主线程,则执行线程业务逻辑,如果是备用线程,则进行线程休眠,休眠时间间隔为配置的备用线程刷锁间隔;
步骤8:线程定期抢锁,主线程抢锁时间间隔为配置的主线程刷锁间隔,备用线程抢锁时间间隔为配置的备用线程刷锁间隔;
步骤9:当主线程发生故障时,根据步骤6和步骤7将备用线程自动调度为主线程;
步骤10:主动调用或定期通过通用线程组件刷新心跳;
步骤11:线程定期去分布式锁服务中心汇报心跳;
步骤12:多线程监控系统获取当前分布式线程配置注册中心中所有的线程配置信息,包括线程名称、线程超时时间;多线程监控系统获取当前分布式锁服务中心的所有心跳汇报记录,并按线程名称分组;根据线程配置的超时时间与线程各应用实例的最新一次心跳刷新时间做对比,时间间隔大于超时时间的,则判定为线程状态异常,如果小于,则判定为线程状态正常;按线程名称分组汇总状态异常的线程;
步骤13:对于状态异常的线程进行分析;如果该线程没有配置报警忽略进行监控报警,如果配置了报警忽略,则不报警。
2.如权利要求1所述的一种基于分布式的多线程监控及自动调度的方法,其特征在于,所述分布式线程配置注册中心通过RPC接口调用方式在分布式锁服务中心注册保存线程锁信息。
3.如权利要求1所述的一种基于分布式的多线程监控及自动调度的方法,其特征在于,所述测试当前系统与分布式线程配置注册中心和分布式锁服务中心之间的连通性,包括以下步骤:
系统通过RPC接口调用方式调用分布式线程配置注册中心测试接口,如果返回异常,则抛出链接异常,启动失败,终止调用分布式锁服务中心;
如果返回正常,则链路通畅;系统通过RPC接口调用方式调用分布式锁服务中心测试接口,如果返回正常,则链路通畅,线程启动;
如果返回异常,则抛出链接异常,启动失败,终止流程。
4.如权利要求1所述的一种基于分布式的多线程监控及自动调度的方法,其特征在于,所述获取线程配置信息并缓存在系统内存中,包括以下步骤:
如果查询到配置信息,则返回配置信息;
如果在分布式线程配置注册中心没有查询到配置信息,则返回空值,并抛出异常,线程启动失败,终止流程。
5.如权利要求1所述的一种基于分布式的多线程监控及自动调度的方法,其特征在于,所述抢锁包括以下步骤:
首先开始抢锁事务,根据线程名查询锁信息,如果查询到锁未被占用,则表示可以抢锁,更新锁信息中的实例id、刷新时间,返回抢锁成功,结束流程;如果查询到该锁已被占用,则根据线程超时时间、锁刷新时间判断锁是否超时,如果超时,则执行新锁信息中的实例id、刷新时间,返回抢锁成功,结束流程;如果不超时,返回抢锁失败,结束流程;
提交抢锁事务;
分布式锁服务中心返回抢锁结果,结束流程。
6.如权利要求1所述的一种基于分布式的多线程监控及自动调度的方法,其特征在于,所述通用线程组件刷新心跳包括以下步骤:
线程内部根据线程名称、应用实例id通过RPC接口调用方式调用分布式锁服务中心刷新方法,尝试汇报心跳;
将锁信息中的线程名称、应用实例id以及汇报时间记录到分布式锁服务中心;
如果记录成功,则汇报成功;如记录失败,则汇报失败;结束心跳刷新流程。
7.如权利要求1所述的一种基于分布式的多线程监控及自动调度的方法,其特征在于,所述线程定期去分布式锁服务中心汇报心跳中,主线程自动刷新心跳的时间间隔为配置的主线程刷锁间隔;备用线程自动刷新心跳的时间间隔为配置的备用线程刷锁间隔。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311800341.2A CN117785609A (zh) | 2023-12-25 | 2023-12-25 | 一种基于分布式的多线程监控及自动调度的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311800341.2A CN117785609A (zh) | 2023-12-25 | 2023-12-25 | 一种基于分布式的多线程监控及自动调度的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117785609A true CN117785609A (zh) | 2024-03-29 |
Family
ID=90395792
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311800341.2A Pending CN117785609A (zh) | 2023-12-25 | 2023-12-25 | 一种基于分布式的多线程监控及自动调度的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117785609A (zh) |
-
2023
- 2023-12-25 CN CN202311800341.2A patent/CN117785609A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6865685B2 (en) | Power supply event notification system for sending an electronic notification to multiple destinations | |
US6754664B1 (en) | Schema-based computer system health monitoring | |
US8191071B2 (en) | Method for supervising task-based data processing | |
KR101683321B1 (ko) | 분산 애플리케이션들을 모니터링 하는 방법 | |
US4635187A (en) | Control for a multiprocessing system program process | |
CN109739482B (zh) | 一种基于动态语言的业务逻辑执行系统及方法 | |
CN111552556B (zh) | 一种gpu集群服务管理系统及方法 | |
US20100043004A1 (en) | Method and system for computer system diagnostic scheduling using service level objectives | |
CN114884838B (zh) | Kubernetes组件的监控方法及服务器 | |
CN110895488B (zh) | 任务调度方法及装置 | |
CN109165138A (zh) | 一种监控设备故障的方法和装置 | |
CN114118991A (zh) | 第三方系统监控系统、方法、装置、设备及存储介质 | |
US7120633B1 (en) | Method and system for automated handling of alarms from a fault management system for a telecommunications network | |
US7206975B1 (en) | Internal product fault monitoring apparatus and method | |
CN110798339A (zh) | 一种基于分布式任务调度框架的任务容灾方法 | |
CN113391902B (zh) | 一种任务调度方法及设备、存储介质 | |
CN117785609A (zh) | 一种基于分布式的多线程监控及自动调度的方法 | |
CN113448699A (zh) | 一种分布式定时任务处理系统、方法及相关装置 | |
CN111897626A (zh) | 一种面向云计算场景的虚拟机高可靠系统和实现方法 | |
CN111309456B (zh) | 一种任务执行方法及系统 | |
CN111309557A (zh) | 一种多操作系统的监控方法、装置、设备和介质 | |
US20060248531A1 (en) | Information processing device, information processing method and computer-readable medium having information processing program | |
CN112905372A (zh) | 线程的异常诊断方法及装置 | |
CN108874626A (zh) | 系统监控方法与装置 | |
CN109672573B (zh) | 一种配置文件的部署方法、确定方法、服务器及存储介质 |
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 |