1.本技术涉及排队处理技术领域,尤其是涉及一种排队系统调度检测方法及装置。
背景技术:
2.随着电子智能产品的快速发展以及人类生活对服务环境、服务效率的要求越来越高,应用于银行、医院、海关、电信、工商、税务等窗口服务性行业的排队系统应运而生,以有效地改善服务环境,提高工作效率。从排队形式上,排队系统包括按键式排队系统和触摸屏排队系统;从连接方式上,排队系统划分为有线排队系统和无线排队系统;从使用产所来分,排队系统有银行排队系统、医院排队系统、监狱探访排队系统等。
3.在为不同业务领域提供排队系统服务时,需要对相应的排队系统代码进行开发。当前排队系统的软件由于硬件厂商多样化和产品型号多样化,软件代码会逐渐变得臃肿庞杂,导致对于软件的代码管理变得越来越困难,代码阅读困难,不方便工程师维护,增加了后续接手工程师的上手难度。同时,在软件更新时,由于软件代码的臃肿庞杂需要对整个程序进行更新,且在对软件程序进行修改甚至容易引起其它地方出现新的问题。
4.针对上述中的相关技术,发明人发现现有的排队系统的软件代码存在有更新修改操作繁琐,维护难度大的问题。
技术实现要素:
5.为了提升软件代码更新和修改时的效率,降低维护成本,本技术提供了一种排队系统调度检测方法及装置。
6.第一方面,本技术提供一种排队系统调度检测方法。
7.本技术是通过以下技术方案得以实现的:
8.一种排队系统调度检测方法,包括以下步骤,
9.基于mfc框架,结合预设的数据接口生成
目标模块的动态链接库;
10.基于
所述动态链接库,读取所述目标模块的配置文件、模块名称和处理函数;
11.基于所述配置文件和所述模块名称,初始化对应的所述目标模块;
12.基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理
线程,所述处理线程用于执行对应的所述目标模块的运行程序或停止程序;
13.启动所述目标模块的监控线程,所述监控线程用于实时检测对应的目标模块的处理线程的状态;
14.若检测到目标模块的处理线程的状态为异常时,自动预判异常原因。
15.本技术在一较佳示例中可以进一步配置为:所述基于所述配置文件和所述模块名称,初始化对应的所述目标模块的步骤包括,
16.基于所述配置文件和所述模块名称,从所述mfc框架的主线程获取语言文本路径和日志开关;
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.获取关于处理线程的日志文件信息,所述日志文件信息包括处理线程的异常状态信息,以及捕获的异常原因信息;
42.将日志文件信息导入根据专家经验建立的规则模型中进行学习;
43.预设规则模型的监督信号,结合规则模型的学习结果,调整日志文件信息后再输入规则模型中进行学习,直至规则模型的输出结果的精度达到预设值;
44.基于精度达到预设值的规则模型预判目标模块的处理线程的异常原因。
45.本技术在一较佳示例中可以进一步配置为:还包括以下步骤,
46.统计处理线程在异常状态时对应的历史的异常处理措施;
47.基于日志文件,将异常处理措施汇总至日志文件中并更新日志文件信息;
48.将更新的日志文件信息导入预设的相关度分析模型中进行学习;
49.预设相关度分析模型的监督信号,结合相关度分析模型的学习结果,调整日志文件信息后再输入相关度分析模型中进行学习,直至相关度分析模型的输出结果的精度达到预设值;
50.基于精度达到预设值的相关度分析模型分析目标模块为处于异常状态的处理线程匹配对应的异常处理措施。
51.本技术在一较佳示例中可以进一步配置为:所述基于精度达到预设值的相关度分析模型分析目标模块为处于异常状态的处理线程匹配对应的异常处理措施的步骤包括,
52.计算目标模块的处于异常状态的处理线程对应的异常处理措施的相关值;
53.按相关值由大到小的顺序排序处于异常状态的处理线程对应的异常处理措施;
54.选取排序于第一位的异常处理措施作为处于异常状态的处理线程对应的最优异常处理措施。
55.本技术在一较佳示例中可以进一步配置为:还包括以下步骤,
56.对预判的目标模块的处理线程的异常原因进行优先级等级划分,以及实时获取处理线程的总数量;
57.若所述处理线程的总数量满足限流处理的触发条件,则仅匹配优先级等级满足预设条件的异常原因对应的异常处理措施;
58.将其它优先级等级的异常原因保存至缓冲队列中,直至所述处理线程的数量不满足限流处理的触发条件,按照预设顺序匹配与其它优先级等级的异常原因对应的异常处理措施。
59.本技术在一较佳示例中可以进一步配置为:所述限流处理的触发条件随所述处理线程的数量变化进行动态调整,其中所述处理线程包括第一处理线程、第二处理线程和第三处理线程;
60.若所述第一处理线程均处于工作状态,则触发限流处理;
61.若所述第二处理线程处于工作状态,且所述第一处理线程的状态满足第一预设条件,则触发限流处理;
62.若所述第三处理线程处于工作状态,且所述第二处理线程的状态和所述第一处理线程的状态满足第二预设条件,则触发限流处理。
63.本技术在一较佳示例中可以进一步配置为:所述限流处理包括第一限流处理、第二限流处理和第三限流处理;
64.若所述第一处理线程均处于工作状态,则触发第一限流处理,所述第一限流处理包括仅为等级满足预设条件的异常原因匹配一项异常处理措施;
65.若所述第二处理线程处于工作状态,且所述第一处理线程的状态满足第一预设条件,则触发第二限流处理,所述第二限流处理包括仅为等级满足预设条件的异常原因匹配至少两项异常处理措施;
66.若所述第三处理线程处于工作状态,且所述第二处理线程的状态和所述第一处理线程的状态满足第二预设条件,则触发第三限流处理,所述第三限流处理包括仅为等级满足预设条件的异常原因匹配所有满足的异常处理措施。
67.第二方面,本技术提供一种排队系统调度检测装置。
68.本技术是通过以下技术方案得以实现的:
69.一种排队系统调度检测装置,包括,
70.调用模块,用于基于mfc框架,结合预设的数据接口生成目标模块的动态链接库;
71.数据模块,用于基于所述动态链接库,读取所述目标模块的配置文件、模块名称和处理函数;
72.初始化模块,用于基于所述配置文件和所述模块名称,初始化对应的所述目标模块;
73.处理线程模块,用于基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程,所述处理线程用于执行对应的所述目标模块的运行程序或停止程序;
74.监控线程模块,用于启动所述目标模块的监控线程,所述监控线程用于实时检测对应的目标模块的处理线程的状态;
75.异常判研模块,用于在检测到目标模块的处理线程的状态为异常时,自动预判异常原因。
76.第三方面,本技术提供一种计算机设备。
77.本技术是通过以下技术方案得以实现的:
78.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意一种排队系统调度检测方法的步骤。
79.第四方面,本技术提供一种计算机可读存储介质。
80.本技术是通过以下技术方案得以实现的:
81.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种排队系统调度检测方法的步骤。
82.综上所述,与现有技术相比,本技术提供的技术方案带来的有益效果至少包括:
83.通过在mfc调度执行框架的基础上,按照标准接口制作成动态链接库dll,模块化设计目标模块配置、目标模块初始化、目标模块执行和目标模块运行监控,通过添加配置文件即可完成排队系统的调度,框架程序软件具有良好的清晰结构,代码修改难度降低;对于软件的代码实行模块化管理,降低代码阅读难度,便于工程师的后续维护,降低了维护成本;在检测到目标模块的处理线程的状态为异常时,自动预判异常原因,以进一步辅助工程师进行代码修改工作;同时,无需对整个软件程序进行更新,提升了软件代码更新和修改时的效率,适用性也更强;在优先保证业务线程顺利进行的同时,改善工程师的异常排查效率。
附图说明
84.图1为本技术一个示例性实施例提供的一种排队系统调度检测方法的主要流程
图。
85.图2为本技术又一个示例性实施例提供的一种排队系统调度检测方法的逻辑图。
86.图3为本技术另一个示例性实施例提供的一种排队系统调度检测方法的目标模块初始化的流程图。
87.图4为本技术一个示例性实施例提供的一种排队系统调度检测方法的目标模块启动处理线程的流程图。
88.图5为本技术一个示例性实施例提供的一种排队系统调度检测方法的读取目标模块配置文件的逻辑图。
89.图6为本技术一个示例性实施例提供的一种排队系统调度检测方法的目标模块初始化的逻辑图。
90.图7为本技术一个示例性实施例提供的一种排队系统调度检测方法的目标模块启动处理线程的逻辑图。
91.图8为本技术一个示例性实施例提供的一种排队系统调度检测方法的目标模块初始化进度的流程图。
92.图9为本技术一个示例性实施例提供的一种排队系统调度检测方法的根据预设的异常检测端口自动预判异常原因的流程图。
93.图10为本技术一个示例性实施例提供的一种排队系统调度检测方法的框架配置示意图。
94.图11为本技术一个示例性实施例提供的一种排队系统调度检测方法的可视化窗口界面的绿灯状态示意图。
95.图12为本技术一个示例性实施例提供的一种排队系统调度检测装置的结构框图。
具体实施方式
96.本具体实施例仅仅是对本技术的解释,其并不是对本技术的限制,本领域技术人员在阅读完本说明书后可以根据需要对本实施例做出没有创造性贡献的修改,但只要在本技术的权利要求范围内都受到专利法的保护。
97.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。
98.另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
99.下面结合说明书附图对本技术实施例作进一步详细描述。
100.参照图1,本技术实施例提供一种排队系统调度检测方法,所述方法的主要步骤描述如下。
101.s1:基于mfc框架,结合预设的数据接口生成目标模块的动态链接库;
102.s2:基于所述动态链接库,读取所述目标模块的配置文件、模块名称和处理函数;
103.s3:基于所述配置文件和所述模块名称,初始化对应的所述目标模块;
104.s4:基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程,所述处理线程用于执行对应的所述目标模块的运行程序或停止程序;
105.s5:启动所述目标模块的监控线程,所述监控线程用于实时检测对应的目标模块的处理线程的状态;
106.s6:若检测到目标模块的处理线程的状态为异常时,自动预判异常原因。
107.具体地,mfc框架(microsoft foundation classes,微软基础类)以c++类的形式封装了windows的api接口,c++类包含了大量windows句柄封装类和很多windows的内建控件和组件的封装类。mfc框架提供了应用程序的一个通用框架,以减少重复性代码的编程,减少工程师的编译工作量。mfc框架虽然没有针对性,但封装很浅,能够根据实际需求功能进行灵活编译。
108.基于mfc框架设计排队系统的调度执行框架的主线程,并通过预设的数据接口定义生成目标模块的动态链接库dll,包括读取目标模块的配置文件、获取目标模块的名称、目标模块初始化、目标模块的处理函数、目标模块的配置窗口等。其中,目标模块可以为条屏led模块、语音播报器模块、环绕屏模块等。预设的数据接口可以为标准接口。不同的目标模块采用不同的线程处理,以减少代码修改时的耦合问题和编译用时。
109.借助动态链接库dll读取目标模块的配置文件、模块名称和处理函数。
110.根据配置文件和模块名称,初始化对应的目标模块。
111.根据处理函数和模块名称,启动完成初始化的目标模块的处理线程。
112.启动目标模块的监控线程,实时监控目标模块的工作情况,实现模块运行监控。
113.通过在mfc框架的基础上,按照标准接口制作成动态链接库dll,模块化设计目标模块配置、目标模块初始化、目标模块执行、目标模块运行监控、目标模块结束释放等,实现排队系统代码框架的搭建,极大减少了代码程序的体积,降低了代码程序的复杂度,通过添加配置文件即可完成排队系统的调度,框架程序软件具有良好的清晰结构,代码修改难度降低;对于软件的代码实行模块化管理,降低代码阅读难度,便于工程师的后续维护,降低了维护成本;同时,框架搭建起来后,执行程序基本无需修改,只需要编写对应的功能模块,将功能模块添加到框架内执行,就可以执行对应的功能,无需对整个软件程序进行更新,提升了软件代码更新和修改时的效率,可以适用于银行、医院、海关、电信、工商、税务等窗口服务性行业的排队系统,通用性强。
114.排队系统调度检测逻辑如图2所示。通过点击托盘图标,显示目标模块的名称;再点击所需调度的目标模块的名称;获取目标模块的配置文件;加载目标模块的接口;启动目标模块的处理线程;启动目标模块的监控线程,实现了排队系统任一功能模块的调用。例如,条屏led模块的刷新显示、语音呼叫播放模块、其他与排队系统功能相关的模块。
115.其中,启动目标模块的处理线程后,通过模块状态机处理运行状态和停止状态;判断执行是否超时;直至执行超时,则使模块状态机停止。
116.本实施例中,调用mod_getname()函数获取所需调度的目标模块的名称,用于给主线程获取模块名称。
117.每个功能模块的运行是独立的。每一个功能模块分别有1个主业务处理线程和1个监控线程。其中,主业务处理线程负责处理具体功能模块负责的业务功能。功能模块相关数据来源于数据库,由数据库来提供相关数据,使得功能模块的内容能够按照实际需求进行
切换,例如显示内容、呼叫语音内容等。
118.监控线程用于对各功能模块的运行状态及异常进行监控记录。其中,功能模块的运行状态包括是否在线、是否存在异常、是否空闲等。通过模块内部的状态记录和预设的反馈机制,获取各个功能模块的运行状态,更新功能模块的实时状态。
119.获取功能模块的运行状态后,可以根据实际需要进行反馈,或者,调整、重启功能模块的工作状态。
120.如果检测到处于异常状态,则可以根据实际原因还有各个功能模块之间的异常情况是否存在异常关联进行预设处理或者本地上报或者远程上报。
121.参照图3,在一实施例中,s3:所述基于所述配置文件和所述模块名称,初始化对应的所述目标模块的步骤包括,
122.s31:基于所述配置文件和所述模块名称,从所述mfc框架的主线程获取语言文本路径和日志开关;
123.s32:根据所述语言文本路径和所述日志开关,获取对应的所述目标模块的工作窗口状态和静态文本;
124.s33:创建互斥体用于修改参数和运行互斥;
125.s34:初始化对应的所述目标模块的驱动;
126.s35:根据对应的所述目标模块的工作窗口状态,配置对应的所述目标模块的静态文本。
127.参照图4,在一实施例中,s4:所述基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程的步骤包括,
128.s41:获取对应的所述目标模块的窗口超时处理;
129.s42:基于所述互斥体,等待互斥锁;
130.s431:当所述互斥锁到来时,若需要刷新对应的所述目标模块的工作窗口,则记录任务到超时队列,根据所述处理函数和所述模块名称,执行刷新所述超时队列的任务;
131.s44:根据对应的所述目标模块的窗口超时处理,判断执行的所述超时队列的所述任务是否超时;
132.s45:若执行的所述超时队列的所述任务超时,则刷新对应的所述目标模块的工作窗口为空闲状态;
133.s46:释放所述互斥锁。
134.在一实施例中,s432:当所述互斥锁到来时,若无需刷新对应的所述目标模块的工作窗口;
135.s44:根据对应的所述目标模块的窗口超时处理,判断执行的所述超时队列的所述任务是否超时;
136.s46:若执行的所述超时队列的所述任务未超时,则释放所述互斥锁。
137.参照图5,本实施例中,调用mod_readconfig()函数读取目标模块的配置文件;基于配置文件和目标模块的名称,从mfc框架的主线程获取语言文本路径和日志开关;根据语言文本路径和日志开关,获取所需调度的目标模块的工作窗口状态,工作窗口状态又称业务窗口状态;根据语言文本路径和日志开关,获取所需调度的目标模块的各种静态文本;获取所需调度的目标模块的窗口超时处理,为目标模块初始化做准备。
138.参照图6,本实施例中,调用mod_init()函数初始化目标模块;创建互斥体用于修改参数和运行互斥;初始化所需调度的目标模块的驱动;从业务数据库读取对应的目标模块的工作窗口状态;根据目标模块的工作窗口状态,配置对应的目标模块窗口的静态文本。
139.参照图7,本实施例中,调用mod_proc()函数启动目标模块的处理线程;基于互斥体,等待互斥锁;当互斥锁到来时,判断是否需要刷新目标模块的工作窗口;若需要刷新目标模块的工作窗口,则记录任务到超时队列,根据处理函数和目标模块的名称,执行刷新超时队列的任务;根据获取的所需调度的目标模块的窗口超时处理,判断执行的超时队列的任务是否超时;若执行的超时队列的任务超时,则刷新对应的目标模块的工作窗口为空闲状态,释放互斥锁。
140.当互斥锁到来且无需刷新目标模块的工作窗口时,根据获取的所需调度的目标模块的窗口超时处理,判断执行的超时队列的任务是否超时;若执行的超时队列的任务未超时,则释放互斥锁。
141.参照图8,在一实施例中,基于所述动态链接库,获取所述目标模块的配置窗口;
142.判断目标模块是否完成初始化;
143.若目标模块完成初始化,则打开所述目标模块的配置窗口以可视化显示;
144.若目标模块未完成初始化,则在所述目标模块的配置窗口上显示正在初始化状态。
145.具体地,本实施例中,基于动态链接库dll,调用mod_showdlg()函数获取目标模块的配置窗口;判断目标模块是否已经初始化完成;若目标模块已经初始化完成,则打开目标模块的配置窗口以可视化显示;若目标模块未完成初始化,则在目标模块的配置窗口上显示“正在初始化”。
146.在一实施例中,通过设置重启模块,实现远程控制或更新目标模块的目的。
147.参照图9,在一实施例中,所述若检测到目标模块的处理线程的状态为异常时,自动预判异常原因的步骤包括,
148.若检测到目标模块的处理线程的状态为异常时,调用预设的异常检测端口;
149.基于所述异常检测端口,记录或上报或弹窗警告所述目标模块的处理线程的异常原因。
150.异常检测端口包括目标模块的业务处理接口。异常检测端口可以通过增加回调函数callback进行回调,获得业务处理过程中遇到的错误或者异常,回调函数的参数可以是多样化的,回调函数的参数包括字符串文本、错误码、处理方式等等。
151.回调函数的参数的处理方式是多样化的,以实现记录或上报或弹窗警告目标模块的处理线程的异常原因的目的。
152.通过在目标模块内部设置溯源异常原因的异常检测端口,由异常检测端口自行上报或记录或弹窗警告,实现自动预判目标模块处理线程异常原因的目的。例如,当目标模块条屏led模块刷新失败时,根据回调函数callback捕获异常原因并弹窗警告。
153.参照图10,框架搭建完成后,只需要将功能模块按照标准接口制作成动态链接库dll,通过添加配置文件即可进行排队系统的调用检测。
154.参照图11,在一实施例中,调取目标模块的可视化窗口。
155.启动目标模块的监控线程监控目标模块的工作情况;
156.若目标模块的工作状态为正常,则在可视化窗口的界面上显示绿灯;
157.若目标模块出现连接失败、线程奔溃等异常时,则在可视化窗口的界面上显示红灯。
158.此时,可借助日志文件人工检查目标模块的异常原因并检修,以支持日志查错。
159.在一实施例中,所述若检测到目标模块的处理线程的状态为异常时,自动预判异常原因的步骤包括,
160.获取关于处理线程的日志文件信息,所述日志文件信息包括处理线程的异常状态信息,以及捕获的异常原因信息;
161.将日志文件信息导入根据专家经验建立的规则模型中进行学习;
162.预设规则模型的监督信号,结合规则模型的学习结果,调整日志文件信息后再输入规则模型中进行学习,直至规则模型的输出结果的精度达到预设值;
163.基于精度达到预设值的规则模型预判目标模块的处理线程的异常原因。
164.具体地,获取关于处理线程的日志文件信息,日志文件信息包括处理线程的异常状态信息,以及捕获的异常原因信息。例如,目标模块出现连接失败异常时,异常原因包括配置错误、端口连接错误等。
165.将日志文件信息导入根据专家经验建立的规则模型中进行学习。
166.预设规则模型的监督信号,结合规则模型的学习结果,删除日志文件信息中与处于异常状态的处理线程无关的异常原因记录,以调整日志文件信息后再输入规则模型中进行学习,直至规则模型的输出结果的精度达到预设值,此时即得到异常线程检测模型。
167.采用得到的异常线程检测模型获得目标模块的处理线程的异常原因,以辅助工程师进行代码修改与维护,提升代码修改和维护效率。
168.在一实施例中,还包括以下步骤,
169.统计处理线程在异常状态时对应的历史的异常处理措施;
170.基于日志文件,将异常处理措施汇总至日志文件中并更新日志文件信息;
171.将更新的日志文件信息导入预设的相关度分析模型中进行学习;
172.预设相关度分析模型的监督信号,结合相关度分析模型的学习结果,调整日志文件信息后再输入相关度分析模型中进行学习,直至相关度分析模型的输出结果的精度达到预设值;
173.基于精度达到预设值的相关度分析模型分析目标模块为处于异常状态的处理线程匹配对应的异常处理措施。
174.其中,异常处理措施可通过人工翻阅查询相关资料获得。历史的异常处理措施只有记录以来至今的处理线程在异常状态时对应的异常处理措施。
175.相关度分析模型是依据数学概率统计模型建立。数学概率统计模型符合正态分布、泊松分布等。本实施例中,依据符合正态分布的数学概率统计模型建立相关度分析模型,并经过监督学习得到满足条件的相关度分析模型。
176.采用相关度分析模型为处于异常状态的处理线程匹配对应的异常处理措施,以进一步辅助工程师进行代码修改与维护,提升代码修改和维护效率。
177.在一实施例中,所述基于精度达到预设值的相关度分析模型分析目标模块为处于异常状态的处理线程匹配对应的异常处理措施的步骤包括,
178.计算目标模块的处于异常状态的处理线程对应的异常处理措施的相关值;
179.按相关值由大到小的顺序排序处于异常状态的处理线程对应的异常处理措施;
180.选取排序于第一位的异常处理措施作为处于异常状态的处理线程对应的最优异常处理措施。
181.当匹配的异常处理措施至少有两项时,本技术能够确定与异常原因最优匹配的异常处理措施,加快工程师的异常排查效率,降低试错成本。
182.在一实施例中,还包括以下步骤,
183.对预判的目标模块的处理线程的异常原因进行优先级等级划分,以及实时获取处理线程的总数量;
184.若所述处理线程的总数量满足限流处理的触发条件,则仅匹配优先级等级满足预设条件的异常原因对应的异常处理措施;
185.将其它优先级等级的异常原因保存至缓冲队列中,直至所述处理线程的数量不满足限流处理的触发条件,按照预设顺序匹配与其它优先级等级的异常原因对应的异常处理措施。
186.具体地,根据专家经验对预判的目标模块的处理线程的异常原因进行优先级等级划分。例如,按照事项处理的紧急程度将异常原因划分为紧急、一般和延迟三种优先级等级,且事项处理的紧急程度:紧急》一般》延迟。若目标模块出现连接失败异常对应的异常原因包括配置错误、端口连接错误和网络出错时,将配置错误划分至紧急等级,将端口连接错误划分至一般等级,将网络出错划分至延迟等级。
187.根据系统的运行实际情况,预设限流阈值,将实时获取处理线程的总数量与限流阈值进行比较。若实时获取处理线程的总数量小于限流阈值,则处理线程的总数量不满足限流处理的触发条件;若实时获取处理线程的总数量大于或等于限流阈值,则处理线程的总数量满足限流处理的触发条件。
188.若处理线程的总数量满足限流处理的触发条件,则仅匹配优先级等级满足预设条件的异常原因对应的异常处理措施。本实施例中,仅匹配优先级等级为紧急等级的异常原因对应的异常处理措施。
189.预设缓冲队列,将其它优先级等级的异常原因保存至缓冲队列中,直至处理线程的数量不满足限流处理的触发条件,按照预设顺序匹配与其它优先级等级的异常原因对应的异常处理措施。本实施例中,匹配优先级等级为紧急等级的异常原因对应的异常处理措施,依次将一般等级的异常原因、延迟等级的异常原因保存至缓冲队列中,直至处理线程的数量不满足限流处理的触发条件,按照先匹配一般等级,再匹配延迟等级的顺序匹配异常原因对应的异常处理措施,能够在系统运行不畅时优先保证业务线程的顺利进行,最大限度降低排队系统调度异常检测对系统本身性能的影响。
190.在一实施例中,所述限流处理的触发条件随所述处理线程的数量变化进行动态调整,其中所述处理线程包括第一处理线程、第二处理线程和第三处理线程;
191.若所述第一处理线程均处于工作状态,则触发限流处理;
192.若所述第二处理线程处于工作状态,且所述第一处理线程的状态满足第一预设条件,则触发限流处理;
193.若所述第三处理线程处于工作状态,且所述第二处理线程的状态和所述第一处理
线程的状态满足第二预设条件,则触发限流处理。
194.具体地,当同一时刻有多个处理线程处于可运行状态时,所有处理线程需要排队等待cpu资源,系统会为每个处理线程自动分配一个线程优先级,线程优先级用1、5、10表示,线程优先级的大小反映各个处理线程的处理紧急程度,10表示最高优先级的处理线程,需优先执行。默认的线程优先级的值是5。本实施例中,第一处理线程的线程优先级为10、第二处理线程的线程优先级为5、第三处理线程的线程优先级为1。若第一处理线程均处于工作状态,则触发限流处理;若第二处理线程处于工作状态,且第一处理线程的状态满足第一预设条件,则触发限流处理,第一预设条件可以为第一处理线程的状态包括新生状态和工作状态,且处于新生状态的第一处理线程的数量大于处于工作状态的第一处理线程的数量;若第三处理线程处于工作状态,且第二处理线程的状态和第一处理线程的状态满足第二预设条件,则触发限流处理,其中,第二预设条件可以为第二处理线程的状态为新生状态或工作状态或阻塞状态且第一处理线程的状态均为新生状态。
195.通过随处理线程的数量变化动态调整是否触发限流处理,能够根据系统的实时运行状况自动匹配适宜的限流处理甚至不限流,在优先保证业务线程顺利进行的同时,辅助工程师排查处理线程的异常原因,改善异常排查效率。
196.在一实施例中,所述限流处理包括第一限流处理、第二限流处理和第三限流处理;
197.若所述第一处理线程均处于工作状态,则触发第一限流处理,所述第一限流处理包括仅为等级满足预设条件的异常原因匹配一项异常处理措施;
198.若所述第二处理线程处于工作状态,且所述第一处理线程的状态满足第一预设条件,则触发第二限流处理,所述第二限流处理包括仅为等级满足预设条件的异常原因匹配至少两项异常处理措施;
199.若所述第三处理线程处于工作状态,且所述第二处理线程的状态和所述第一处理线程的状态满足第二预设条件,则触发第三限流处理,所述第三限流处理包括仅为等级满足预设条件的异常原因匹配所有满足的异常处理措施。
200.具体地,限流处理包括第一限流处理、第二限流处理和第三限流处理。
201.若采取第一限流处理,则代表系统当前的cpu资源较为紧张状态,通过将第一限流处理设置为仅为等级满足预设条件的异常原因匹配一项异常处理措施,以减少当前系统的cpu资源消耗,同时也无需相关度分析模型为处于异常状态的处理线程匹配最优的异常处理措施,进一步减少cpu资源损耗。
202.若采取第二限流处理,则代表系统当前的cpu资源处于正常占用状态,通过将第二限流处理设置为仅为等级满足预设条件的异常原因匹配至少两项异常处理措施,本实施例可以仅为等级满足预设条件的异常原因匹配三项异常处理措施,有利于在优先保证业务线程顺利进行的同时,辅助工程师更精确地排查处理线程的异常原因,使得排队系统处理线程的异常检测分析结果更精准。
203.若采取第三限流处理,则代表系统当前的cpu资源处于空闲状态,通过将第三限流处理设置为仅为等级满足预设条件的异常原因匹配所有满足的异常处理措施,辅助工程师全面排查处理线程的异常原因,及早发现可能的漏洞并采取相应的应对措施,保证各处理线程的有序执行。
204.本技术目前已应用在排队系统上,可支持各种led屏幕和语音播报等。
205.综上所述,一种排队系统调度检测方法通过设计mfc调度执行框架,按照标准接口制作成动态链接库dll,模块化设计目标模块配置、目标模块初始化、目标模块执行、目标模块运行监控和目标模块结束释放,通过在搭建好的mfc调度执行框架上添加配置文件即可完成排队系统的调度,框架程序软件具有良好的清晰结构,代码修改难度降低;实现了软件代码的模块化管理,降低了代码阅读难度,便于工程师的后续维护,降低了维护成本;在检测到目标模块的处理线程的状态为异常时,自动预判异常原因,以进一步辅助工程师进行代码修改工作;同时,若目标模块需要更新,则在对应框架的功能模块修改后,直接替换对应动态链接库dll即可实现更新,无需对整个软件程序进行更新,提升了软件代码更新和修改时的效率,适用性也更强。
206.进一步地,通过增加功能模块实现应用扩展,且不同目标模块采用不同的线程处理,以减少代码修改时的耦合问题和编译用时,提升代码修改效率。
207.进一步地,通过设置重启模块,实现远程控制或更新目标模块,提升代码更新效率。
208.进一步地,通过在目标模块内部设置溯源异常原因的异常检测端口或规则模型,由异常检测端口自行上报或记录或弹窗警告,自动预判目标模块处理线程异常原因,辅助工程师进行代码修改与维护,提升代码修改和维护效率。
209.进一步地,采用相关度分析模型为处于异常状态的处理线程匹配对应的异常处理措施,以进一步辅助工程师进行代码修改与维护,提升代码修改和维护效率。
210.进一步地,当匹配的异常处理措施至少有两项时,通过相关度分析模型确定与异常原因最优匹配的异常处理措施,加快工程师的异常排查效率,降低试错成本。
211.进一步地,对预判的目标模块的处理线程的异常原因进行优先级等级划分,在限流处理时仅匹配优先级等级满足预设条件的异常原因对应的异常处理措施,能够在系统运行不畅时优先保证业务线程的顺利进行,最大限度降低排队系统调度异常检测对系统本身性能的影响。
212.进一步地,通过随处理线程的数量变化动态调整是否触发限流处理,能够根据系统的实时运行状况自动匹配适宜的限流处理甚至不限流,在优先保证业务线程顺利进行的同时,辅助工程师排查处理线程的异常原因,改善异常排查效率。
213.进一步地,根据系统当前的cpu资源实际情况,动态匹配相应的限流处理措施,在保证业务线程顺利进行的同时,不同程度地辅助工程师排查处理线程的异常原因,检测方式更灵活科学。
214.应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。
215.参照图12,本技术实施例还提供一种排队系统调度检测装置,该一种排队系统调度检测装置与上述实施例中一种排队系统调度检测方法一一对应。该一种排队系统调度检测装置包括,
216.调用模块,用于基于mfc框架,结合预设的数据接口生成目标模块的动态链接库;
217.数据模块,用于基于所述动态链接库,读取所述目标模块的配置文件、模块名称和处理函数;
218.初始化模块,用于基于所述配置文件和所述模块名称,初始化对应的所述目标模块;
219.处理线程模块,用于基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程,所述处理线程用于执行对应的所述目标模块的运行程序或停止程序;
220.监控线程模块,用于启动所述目标模块的监控线程,所述监控线程用于实时检测对应的目标模块的处理线程的状态;
221.异常判研模块,用于在检测到目标模块的处理线程的状态为异常时,自动预判异常原因。
222.关于一种排队系统调度检测装置的具体限定可以参见上文中对于一种排队系统调度检测方法的限定,在此不再赘述。上述一种排队系统调度检测装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
223.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现上述任意一种排队系统调度检测方法。
224.在一个实施例中,提供了一种计算机可读存储介质,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现以下步骤:
225.s1:基于mfc框架,结合预设的数据接口生成目标模块的动态链接库;
226.s2:基于所述动态链接库,读取所述目标模块的配置文件、模块名称和处理函数;
227.s3:基于所述配置文件和所述模块名称,初始化对应的所述目标模块;
228.s4:基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程,所述处理线程用于执行对应的所述目标模块的运行程序或停止程序;
229.s5:启动所述目标模块的监控线程,所述监控线程用于实时检测对应的目标模块的处理线程的状态;
230.s6:若检测到目标模块的处理线程的状态为异常时,自动预判异常原因。
231.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(rom)、可编程rom(prom)、电可编程rom(eprom)、电可擦除可编程rom(eeprom)或闪存。易失性存储器可包括随机存取存储器(ram)或者外部高速缓冲存储器。作为说明而非局限,ram以多种形式可得,诸如静态ram(sram)、动态ram(dram)、同步dram(sdram)、双数据率sdram(ddrsdram)、增强
型sdram(esdram)、同步链路(synchlink)dram(sldram)、存储器总线(rambus)直接ram(rdram)、直接存储器总线动态ram(drdram)、以及存储器总线动态ram(rdram)等。
232.所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将所述系统的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。
技术特征:
1.一种排队系统调度检测方法,其特征在于,包括以下步骤,基于mfc框架,结合预设的数据接口生成目标模块的动态链接库;基于所述动态链接库,读取所述目标模块的配置文件、模块名称和处理函数;基于所述配置文件和所述模块名称,初始化对应的所述目标模块;基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程,所述处理线程用于执行对应的所述目标模块的运行程序或停止程序;启动所述目标模块的监控线程,所述监控线程用于实时检测对应的目标模块的处理线程的状态;若检测到目标模块的处理线程的状态为异常时,自动预判异常原因。2.根据权利要求1所述的排队系统调度检测方法,其特征在于,所述基于所述配置文件和所述模块名称,初始化对应的所述目标模块的步骤包括,基于所述配置文件和所述模块名称,从所述mfc框架的主线程获取语言文本路径和日志开关;根据所述语言文本路径和所述日志开关,获取对应的所述目标模块的工作窗口状态和静态文本;创建互斥体用于修改参数和运行互斥;初始化对应的所述目标模块的驱动;根据对应的所述目标模块的工作窗口状态,配置对应的所述目标模块的静态文本。3.根据权利要求2所述的排队系统调度检测方法,其特征在于,所述基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程的步骤包括,获取对应的所述目标模块的窗口超时处理;基于所述互斥体,等待互斥锁;当所述互斥锁到来时,若需要刷新对应的所述目标模块的工作窗口,则记录任务到超时队列,根据所述处理函数和所述模块名称,执行刷新所述超时队列的任务;根据对应的所述目标模块的窗口超时处理,判断执行的所述超时队列的所述任务是否超时;若执行的所述超时队列的所述任务超时,则刷新对应的所述目标模块的工作窗口为空闲状态;释放所述互斥锁。4.根据权利要求3所述的排队系统调度检测方法,其特征在于,还包括以下步骤,当所述互斥锁到来时,若无需刷新对应的所述目标模块的工作窗口;根据对应的所述目标模块的窗口超时处理,判断执行的所述超时队列的所述任务是否超时;若执行的所述超时队列的所述任务未超时,则释放所述互斥锁。5.根据权利要求1所述的排队系统调度检测方法,其特征在于,还包括以下步骤,基于所述动态链接库,获取所述目标模块的配置窗口;判断目标模块是否完成初始化;若目标模块完成初始化,则打开所述目标模块的配置窗口以可视化显示;若目标模块未完成初始化,则在所述目标模块的配置窗口上显示正在初始化状态。
6.根据权利要求1-5任意一项所述的排队系统调度检测方法,其特征在于,所述若检测到目标模块的处理线程的状态为异常时,自动预判异常原因的步骤包括,若检测到目标模块的处理线程的状态为异常时,调用预设的异常检测端口;基于所述异常检测端口,记录或上报或弹窗警告所述目标模块的处理线程的异常原因。7.根据权利要求1-5任意一项所述的排队系统调度检测方法,其特征在于,所述若检测到目标模块的处理线程的状态为异常时,自动预判异常原因的步骤包括,获取关于处理线程的日志文件信息,所述日志文件信息包括处理线程的异常状态信息,以及捕获的异常原因信息;将日志文件信息导入根据专家经验建立的规则模型中进行学习;预设规则模型的监督信号,结合规则模型的学习结果,调整日志文件信息后再输入规则模型中进行学习,直至规则模型的输出结果的精度达到预设值;基于精度达到预设值的规则模型预判目标模块的处理线程的异常原因。8.根据权利要求7所述的排队系统调度检测方法,其特征在于,还包括以下步骤,统计处理线程在异常状态时对应的历史的异常处理措施;基于日志文件,将异常处理措施汇总至日志文件中并更新日志文件信息;将更新的日志文件信息导入预设的相关度分析模型中进行学习;预设相关度分析模型的监督信号,结合相关度分析模型的学习结果,调整日志文件信息后再输入相关度分析模型中进行学习,直至相关度分析模型的输出结果的精度达到预设值;基于精度达到预设值的相关度分析模型分析目标模块为处于异常状态的处理线程匹配对应的异常处理措施。9.根据权利要求8所述的排队系统调度检测方法,其特征在于,所述基于精度达到预设值的相关度分析模型分析目标模块为处于异常状态的处理线程匹配对应的异常处理措施的步骤包括,计算目标模块的处于异常状态的处理线程对应的异常处理措施的相关值;按相关值由大到小的顺序排序处于异常状态的处理线程对应的异常处理措施;选取排序于第一位的异常处理措施作为处于异常状态的处理线程对应的最优异常处理措施。10.根据权利要求7所述的排队系统调度检测方法,其特征在于,还包括以下步骤,对预判的目标模块的处理线程的异常原因进行优先级等级划分,以及实时获取处理线程的总数量;若所述处理线程的总数量满足限流处理的触发条件,则仅匹配优先级等级满足预设条件的异常原因对应的异常处理措施;将其它优先级等级的异常原因保存至缓冲队列中,直至所述处理线程的数量不满足限流处理的触发条件,按照预设顺序匹配与其它优先级等级的异常原因对应的异常处理措施。11.根据权利要求10所述的排队系统调度检测方法,其特征在于,所述限流处理的触发条件随所述处理线程的数量变化进行动态调整,其中所述处理线程包括第一处理线程、第
二处理线程和第三处理线程;若所述第一处理线程均处于工作状态,则触发限流处理;若所述第二处理线程处于工作状态,且所述第一处理线程的状态满足第一预设条件,则触发限流处理;若所述第三处理线程处于工作状态,且所述第二处理线程的状态和所述第一处理线程的状态满足第二预设条件,则触发限流处理。12.根据权利要求11所述的排队系统调度检测方法,其特征在于,所述限流处理包括第一限流处理、第二限流处理和第三限流处理;若所述第一处理线程均处于工作状态,则触发第一限流处理,所述第一限流处理包括仅为等级满足预设条件的异常原因匹配一项异常处理措施;若所述第二处理线程处于工作状态,且所述第一处理线程的状态满足第一预设条件,则触发第二限流处理,所述第二限流处理包括仅为等级满足预设条件的异常原因匹配至少两项异常处理措施;若所述第三处理线程处于工作状态,且所述第二处理线程的状态和所述第一处理线程的状态满足第二预设条件,则触发第三限流处理,所述第三限流处理包括仅为等级满足预设条件的异常原因匹配所有满足的异常处理措施。13.一种排队系统调度检测装置,其特征在于,包括,调用模块,用于基于mfc框架,结合预设的数据接口生成目标模块的动态链接库;数据模块,用于基于所述动态链接库,读取所述目标模块的配置文件、模块名称和处理函数;初始化模块,用于基于所述配置文件和所述模块名称,初始化对应的所述目标模块;处理线程模块,用于基于所述处理函数和所述模块名称,启动完成初始化的所述目标模块的处理线程,所述处理线程用于执行对应的所述目标模块的运行程序或停止程序;监控线程模块,用于启动所述目标模块的监控线程,所述监控线程用于实时检测对应的目标模块的处理线程的状态;异常判研模块,用于在检测到目标模块的处理线程的状态为异常时,自动预判异常原因。14.一种计算机设备,其特征在于,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现权利要求1至12任意一项所述方法的步骤。15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1至12任意一项所述方法的步骤。
技术总结
本申请涉及排队处理技术领域,公开了一种排队系统调度检测方法及装置,其方法包括基于MFC框架,结合预设的数据接口生成目标模块的动态链接库;基于动态链接库,读取目标模块的配置文件、模块名称和处理函数;基于配置文件和模块名称,初始化对应的目标模块;基于处理函数和模块名称,启动完成初始化的目标模块的处理线程,处理线程用于执行对应的目标模块的运行程序或停止程序;启动目标模块的监控线程,监控线程用于实时检测对应的目标模块的处理线程的状态;若检测到目标模块的处理线程的状态为异常时,自动预判异常原因。本申请具有提升软件代码更新和修改效率,在保证业务线程顺利进行的同时,改善工程师的异常排查效率的效果。效果。效果。
技术研发人员:
高燕祥 陈乜云 区伟雄
受保护的技术使用者:
广州力麒智能科技有限公司
技术研发日:
2022.11.25
技术公布日:
2023/3/7