一种多线程日志发送管理的方法技术

技术编号:19176847 阅读:137 留言:0更新日期:2018-10-17 00:16
本发明专利技术涉及一种多线程日志发送管理的方法,包括如下步骤:产生日志派发请求,日志派发管理模块接收日志派发请求,日志派发管理模块生成日志发送sendDataTask任务,并派发到同步任务队列,日志发送sendDataTask任务在执行过程中,判定当前并行运行中的任务数量是否大于等于最大任务数Max,如果大于等于最大任务数Max,则将任务持久化后添加到数据缓存队列,如果小于最大任务数Max,则执行以下步骤:首先设置同步标志isActive为真,然后执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。本发明专利技术,算法简洁,调度清晰,采用多线程处理速度更快,通过同步任务队列避免竞争关系对日志管理的影响,易于维护。

A method of multithread log sending management

The invention relates to a multi-thread log sending management method, which comprises the following steps: generating log dispatching request, receiving log dispatching request by log dispatching management module, generating log dispatching management module to send sendDataTask task, dispatching it to synchronous task queue, and sending sendDataTask task to be executed by log dispatching management module. In the program, determine whether the number of tasks in the current parallel operation is greater than or equal to the maximum number of tasks Max, if greater than or equal to the maximum number of tasks Max, then add the task to the data cache queue after persistence, if less than the maximum number of tasks Max, then perform the following steps: first set the synchronization flag isActive to true, and then execute the log Send the network request asycSend, and after the log sends the network request, generate the continue log to send the sendNextTask task and dispatch it to the synchronous task queue. The invention has the advantages of simple algorithm, clear scheduling, quicker multithreading processing speed, avoiding the influence of competition on log management by synchronizing task queues, and easy maintenance.

【技术实现步骤摘要】
一种多线程日志发送管理的方法
本专利技术涉及多线程
及日志管理
,具体说是一种多线程日志发送管理的方法。
技术介绍
日志管理系统中,常规思路是用一个线程(即单线程)单独管理日志(例如一个线程单独写日志、发送日志等),虽然系统开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程日志管理系统低。如果完成同步任务所用的时间比预计时间长,日志管理系统可能会不响应。单线程是指程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的才会执行到。单线程日志发送管理指的是:日志发送请求在同一时间,只能有一个任务在执行,不存在并发任务。在单线程日志发送管理中,如果上一次日志发送请求尚未完成,而新的日志发送请求又已产生,则会出现竞争关系,或导致日志信息不完整,影响日志管理系统的安全、可靠运行。
技术实现思路
针对现有技术中存在的缺陷,本专利技术的目的在于提供一种多线程日志发送管理的方法,算法简洁,调度清晰,采用多线程处理速度更快,通过同步任务队列避免竞争关系对日志管理的影响,易于维护。为达到以上目的,本专利技术采取的技术方案是:一种多线程日志发送管理的方法,其特征在于,包括如下步骤:设定最大任务数Max,触发日志发送事件sendLog,产生日志派发请求,日志派发管理模块接收日志派发请求,日志派发管理模块生成日志发送sendDataTask任务,并派发到同步任务队列,日志发送sendDataTask任务在执行过程中,判定当前并行运行中的任务数量是否大于等于最大任务数Max,如果大于等于最大任务数Max,则将任务持久化后得到日志持久化数据datan,n=1,2,3……,将日志持久化数据datan添加到数据缓存队列,如果小于最大任务数Max,则执行以下步骤:执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。在上述技术方案的基础上,所述继续日志发送sendNextTask任务,从数据缓存队列中获取待发送的日志持久化数据datan,如果数据缓存队列存在缓存数据,则从队列头获取一条日志持久化数据datan,然后执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。在上述技术方案的基础上,所述继续日志发送sendNextTask任务,从数据缓存队列中获取待发送的日志持久化数据datan,如果数据缓存队列没有缓存数据,则表明不存在需要发送的任务,结束发送任务。在上述技术方案的基础上,当前并行运行中的任务数量,包括:当前行运行中的日志发送sendDataTask任务的数量,以及当前行运行中的继续日志发送sendNextTask任务的数量。在上述技术方案的基础上,当收到远端回调信息AsycCallback,则判定当前日志发送网络请求结束。本专利技术所述的多线程日志发送管理的方法,算法简洁,调度清晰,采用多线程处理速度更快,通过同步任务队列避免竞争关系对日志管理的影响,易于维护。附图说明本专利技术有如下附图:图1本专利技术的流程图。具体实施方式以下结合附图对本专利技术作进一步详细说明。如图1所示,本专利技术所述的多线程日志发送管理的方法,包括如下步骤:设定最大任务数Max,触发日志发送事件sendLog,产生日志派发请求,日志派发管理模块接收日志派发请求,日志派发管理模块生成日志发送sendDataTask任务,并派发到同步任务队列,日志发送sendDataTask任务在执行过程中,判定当前并行运行中的任务数量是否大于等于最大任务数Max,如果大于等于最大任务数Max,则将任务持久化后得到日志持久化数据datan,n=1,2,3……,将日志持久化数据datan添加到数据缓存队列,如果小于最大任务数Max,则执行以下步骤:执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。在上述技术方案的基础上,所述继续日志发送sendNextTask任务,从数据缓存队列中获取待发送的日志持久化数据datan,如果数据缓存队列存在缓存数据,则从队列头获取一条日志持久化数据datan,然后执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。在上述技术方案的基础上,所述继续日志发送sendNextTask任务,从数据缓存队列中获取待发送的日志持久化数据datan,如果数据缓存队列没有缓存数据,则表明不存在需要发送的任务,结束发送任务。在上述技术方案的基础上,当前并行运行中的任务数量,包括:当前行运行中的日志发送sendDataTask任务的数量,以及当前行运行中的继续日志发送sendNextTask任务的数量。在上述技术方案的基础上,当收到远端回调信息AsycCallback,则判定当前日志发送网络请求结束。在上述技术方案的基础上,最大任务数Max的取值,根据当前系统资源的情况增减。在上述技术方案的基础上,所述系统资源的情况包括:系统使用内存,系统空闲内存,cpu占用率,当系统资源的情况达到或超过预设阈值,则按默认值增加或减少最大任务数Max的取值。本说明书中未作详细描述的内容属于本领域专业技术人员公知的现有技术。本文档来自技高网...

【技术保护点】
1.一种多线程日志发送管理的方法,其特征在于,包括如下步骤:设定最大任务数Max,触发日志发送事件sendLog,产生日志派发请求,日志派发管理模块接收日志派发请求,日志派发管理模块生成日志发送sendDataTask任务,并派发到同步任务队列,日志发送sendDataTask任务在执行过程中,判定当前并行运行中的任务数量是否大于等于最大任务数Max,如果大于等于最大任务数Max,则将任务持久化后得到日志持久化数据data n,n=1,2,3……,将日志持久化数据data n添加到数据缓存队列,如果小于最大任务数Max,则执行以下步骤:执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。

【技术特征摘要】
1.一种多线程日志发送管理的方法,其特征在于,包括如下步骤:设定最大任务数Max,触发日志发送事件sendLog,产生日志派发请求,日志派发管理模块接收日志派发请求,日志派发管理模块生成日志发送sendDataTask任务,并派发到同步任务队列,日志发送sendDataTask任务在执行过程中,判定当前并行运行中的任务数量是否大于等于最大任务数Max,如果大于等于最大任务数Max,则将任务持久化后得到日志持久化数据datan,n=1,2,3……,将日志持久化数据datan添加到数据缓存队列,如果小于最大任务数Max,则执行以下步骤:执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。2.如权利要求1所述的多线程日志发送管理的方法,其特征在于:所述继续日志发送sendNextTask任务,从数据缓存队列中获取待发送的日志持久...

【专利技术属性】
技术研发人员:郭艳杰
申请(专利权)人:北京酷我科技有限公司
类型:发明
国别省市:北京,11

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

1