一种线程流控方法和装置制造方法及图纸

技术编号:11365197 阅读:111 留言:0更新日期:2015-04-29 15:33
本发明专利技术提供了一种线程流控方法和装置,其中,所述方法包括:接收并缓存至少一个线程请求任务至任务缓冲池中;根据动态可调的信号量从所述任务缓冲池中获取至少一个线程请求任务,并开启至少一个并发任务调度线程,以执行获取的线程请求任务的调度操作;其中,所述并发任务调度线程的数量与所述动态可调的信号量的数量相同。本发明专利技术技术方案实现了线程数量的可控,可以最大限度的利用系统资源。

【技术实现步骤摘要】
一种线程流控方法和装置
本专利技术涉及通信
,特别是涉及一种线程流控方法和装置。
技术介绍
“高并发”现象(同时处理多个线程或多个进程)目前在很多大型的软件系统中普遍存在,比如大型的电子商务平台、电子购票系统等等,而且这种现象具有很强的突发性和破坏性。破坏性严重时会导致系统处于瘫痪状态而无法提供服务,OMC(OperationandMaintenanceCenter,操作维护中心)网管系统就面临着“告警风暴”的威胁,往往使得OMC系统无法正常运行。“告警风暴”是大量网元突发性同时上报告警的现象,这样会造成OMC系统会开启大量的线程处理这些告警消息。但是如果OMC系统对于这种大量线程的“高并发”处理不当,就会出现顾此失彼的现象,容易出现由于系统资源紧缺造成系统瘫痪的问题。具体分析为:如每条告警均开启一个线程进行处理,这样会造成CPU或I/O(Input/Output,输入/输出)使用率的骤然升高,操作系统性能逐步下降;为了降低CPU的占用率,可以使用线程池的方式,对大量告警进行简单的“排队与同步”,但是线程池的处理能力往往与队列长度无法吻合,很容易因队列过长造成“内存溢出”问题。总之对于网元“告警风暴”的现象,OMC必须具备一定的容灾(当出现特殊异常情况时(比如告警风暴),软件系统应该具备自我保护的能力,异常事件不能够影响其正常运行状态)保护措施,以保证系统7*24小时不间断的稳定运行。在网元设备正常运行的过程中,由于内部原因(CPU占用率高,任务多等原因)或外部原因(人为复位单板或者插拔)会发生故障,此时就会通过SNMP(SimpleNetworkManagementProtocol,简单网络管理协议)向OMC系统上报一条告警消息。OMC系统接收到网元告警后转化为内部的JMS(JavaMessageService,Java消息服务)消息,并将这条异步的JMS消息发送到“告警模块”处理,此时“告警模块”即会开启一个新线程来处理网元告警。目前解决“高并发”问题的方案为直接采用多线程或线程池来进行处理:目前OMC系统的“告警模块”处理告警消息的流程如下:首先告警接收器负责接收JMS告警消息,同时执行必要的过滤工作,然后告警接收器向告警处理模块发起处理请求。当出现“告警风暴”时,告警接收器要么并发无限多个线程,要么使用线程池开启一定数量的线程来向告警处理模块发起处理请求。在此,将告警接收器和告警处理模块分别概括为“业务请求层”和“业务处理层”,告警消息的请求处理方式如图1所示。在多线程并发方式(原始方式)中,业务请求层向业务处理层请求n个线程处理告警消息;在线程池方式(改进方式)中,业务请求层向J2EE标准线程池请求线程,由J2EE标准线程池根据自身线程的容量向业务处理层发起线程处理告警消息。众所周知,当前众多软件系统(包括OMC系统)大多采用如图1所示的两种方式处理高并发的请求线程。其中,线程池通过线程复用的措施解决了大量线程并发的问题;较多线程并发在系统资源保护方面有很大程度的改进和优化,但是这两种处理并发请求的方式都存在缺陷,当出现大量的并发请求时,直接使用多线程并发的方式存在“无法控制线程数量”的问题,线程数量无限增大是重大的系统隐患;而“线程池”方式存在“线程数量范围不可动态调节”的问题,如果线程池的处理能力不能够最佳的处理这种“高并发”,将导致大量处理任务积压,从而可能出现内存溢出的问题。由此可见,上述两种处理高并发线程的方式的重要缺陷在于“不可管理”。
技术实现思路
本专利技术提供一种线程流控方法和装置,以解决现有的线程流控方案无法控制线程数量的问题。为了解决上述问题,本专利技术公开了一种线程流控方法,包括:接收并缓存至少一个线程请求任务至任务缓冲池中;根据动态可调的信号量从所述任务缓冲池中获取至少一个线程请求任务,并开启至少一个并发任务调度线程,以执行获取的线程请求任务的调度操作;其中,所述并发任务调度线程的数量与所述动态可调的信号量的数量相同。优选地,所述线程请求任务通过以下方式生成:根据预先设定的线程请求任务的基本属性信息和执行请求接口信息,将告警消息转化生成为线程请求任务。优选地,所述方法还包括:通过任务缓冲池监控线程实时监控所述任务缓冲池中的线程请求任务的数量;判断所述任务缓冲池中的线程请求任务的数量是否大于等于预先设定的任务缓冲池容量上限;若大于等于,则增加所述信号量的数量或删除所述任务缓冲池中的线程请求任务。优选地,所述方法还包括:通过管理接口远程增加或减少所述信号量的数量,和/或删除所述任务缓冲池中的线程请求任务。优选地,所述接收并缓存至少一个线程请求任务至任务缓冲池中之前,所述方法还包括:注册所述管理接口,开启所述任务缓冲池监控线程;并创建所述任务缓冲池,对所述信号量进行初始化操作。相应地,本专利技术还公开了一种线程流控装置,包括:任务接收模块,用于接收并缓存至少一个线程请求任务至任务缓冲池中;任务调度模块,用于根据动态可调的信号量从所述任务缓冲池中获取至少一个线程请求任务,并开启至少一个并发任务调度线程,以执行获取的线程请求任务的调度操作;其中,所述并发任务调度线程的数量与所述动态可调的信号量的数量相同。优选地,所述装置还包括:任务生成模块,用于根据预先设定的线程请求任务的基本属性信息和执行请求接口信息,将告警消息转化生成为线程请求任务。优选地,所述装置还包括:任务监控模块,用于通过任务缓冲池监控线程实时监控所述任务缓冲池中的线程请求任务的数量;任务判断模块,用于判断所述任务缓冲池中的线程请求任务的数量是否大于等于预先设定的任务缓冲池容量上限;调整清除模块,用于若所述任务缓冲池中的线程请求任务的数量大于等于预先设定的任务缓冲池容量上限,则增加所述信号量的数量或删除所述任务缓冲池中的线程请求任务。优选地,所述装置还包括:远程管理模块,用于通过管理接口远程增加或减少所述信号量的数量,和/或删除所述任务缓冲池中的线程请求任务。优选地,所述装置还包括:初始化模块,用于在所述任务接收模块接收并缓存至少一个线程请求任务至任务缓冲池中之前,注册所述管理接口,开启所述任务缓冲池监控线程;并创建所述任务缓冲池,对所述信号量进行初始化操作。与
技术介绍
相比,本专利技术包括以下优点:接收并缓存至少一个线程请求任务至任务缓冲池中;根据动态可调的信号量从所述任务缓冲池中获取至少一个线程请求任务,并开启至少一个并发任务调度线程,以执行获取的线程请求任务的调度操作;其中,所述并发任务调度线程的数量与所述动态可调的信号量的数量相同。也就是说,通过调节信号量的数量进一步控制线程请求任务的调度,在任务缓冲池中的线程请求任务较少时,可以适当减少信号量的数量,相对少量地调度线程请求任务;在任务缓冲池中的线程请求任务较多时,可以适当增加信号量的数量,相对大量地调度线程请求任务,实现线程数量的可控,可以最大限度的利用系统资源。附图说明图1是
技术介绍
中告警消息的请求处理方式示意图;图2是本专利技术实施例中线程流控装置的工作示意图;图3是本专利技术实施例中线程流控装置的软件结构示意图;图4是本专利技术实施例中线程流控装置的通用性特征示意图;图5是本专利技术实施例中线程流控装置与业务请求层和业务处理层之间的调用关系,以及自身内部的流程示意图;图6本文档来自技高网
...
一种线程流控方法和装置

【技术保护点】
一种线程流控方法,其特征在于,包括:接收并缓存至少一个线程请求任务至任务缓冲池中;根据动态可调的信号量从所述任务缓冲池中获取至少一个线程请求任务,并开启至少一个并发任务调度线程,以执行获取的线程请求任务的调度操作;其中,所述并发任务调度线程的数量与所述动态可调的信号量的数量相同。

【技术特征摘要】
1.一种线程流控方法,其特征在于,包括:接收并缓存至少一个线程请求任务至任务缓冲池中;根据动态可调的信号量从所述任务缓冲池中获取至少一个线程请求任务,并开启至少一个并发任务调度线程,以执行获取的线程请求任务的调度操作;其中,所述并发任务调度线程的数量与所述动态可调的信号量的数量相同;通过任务缓冲池监控线程实时监控所述任务缓冲池中的线程请求任务的数量;判断所述任务缓冲池中的线程请求任务的数量是否大于等于预先设定的任务缓冲池容量上限;若大于等于,则增加所述信号量的数量或删除所述任务缓冲池中的线程请求任务。2.根据权利要求1所述的方法,其特征在于,所述线程请求任务通过以下方式生成:根据预先设定的线程请求任务的基本属性信息和执行请求接口信息,将告警消息转化生成为线程请求任务。3.根据权利要求1所述的方法,其特征在于,所述方法还包括:通过管理接口远程增加或减少所述信号量的数量,和/或删除所述任务缓冲池中的线程请求任务。4.根据权利要求3所述的方法,其特征在于,所述接收并缓存至少一个线程请求任务至任务缓冲池中之前,所述方法还包括:注册所述管理接口,开启所述任务缓冲池监控线程;并创建所述任务缓冲池,对所述信号量进行初始化操作。5.一种线程流控装置,其特征在于,包括:任务接收模块,用于接收并缓存至少一个线程请求任务至任务缓冲池...

【专利技术属性】
技术研发人员:贺治国
申请(专利权)人:大唐移动通信设备有限公司
类型:发明
国别省市:北京;11

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

1