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

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

A single thread log sending management method

The invention relates to a single 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. If there is a contention, the task is persisted and added to the data cache queue. If there is no contention, the following steps are performed: first set the synchronization flag isActive to be true, then execute the log to send the network request asycSend, and then send the network request node in the log After the beam, generate the continue log to send the sendNextTask task and distribute it to the synchronous task queue. The invention has the advantages of simple algorithm, clear scheduling, avoiding the influence of competition on log management by synchronizing task queues, and easy maintenance.

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

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

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

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

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

1