[发明专利]一种多线程日志发送管理的方法有效
申请号: | 201810336344.8 | 申请日: | 2018-04-16 |
公开(公告)号: | CN108664340B | 公开(公告)日: | 2022-02-08 |
发明(设计)人: | 郭艳杰 | 申请(专利权)人: | 北京酷我科技有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54 |
代理公司: | 北京国标律师事务所 11753 | 代理人: | 姚克枫 |
地址: | 100080 北京市海淀区农大*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 多线程 日志 发送 管理 方法 | ||
本发明涉及一种多线程日志发送管理的方法,包括如下步骤:产生日志派发请求,日志派发管理模块接收日志派发请求,日志派发管理模块生成日志发送sendDataTask任务,并派发到同步任务队列,日志发送sendDataTask任务在执行过程中,判定当前并行运行中的任务数量是否大于等于最大任务数Max,如果大于等于最大任务数Max,则将任务持久化后添加到数据缓存队列,如果小于最大任务数Max,则执行以下步骤:首先设置同步标志isActive为真,然后执行日志发送网络请求asycSend,在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。本发明,算法简洁,调度清晰,采用多线程处理速度更快,通过同步任务队列避免竞争关系对日志管理的影响,易于维护。
技术领域
本发明涉及多线程技术领域及日志管理技术领域,具体说是一种多线程日志发送管理的方法。
背景技术
日志管理系统中,常规思路是用一个线程(即单线程)单独管理日志(例如一个线程单独写日志、发送日志等),虽然系统开发比较容易,但由于需要在上一个任务完成后才能开始新的任务,所以其效率通常比多线程日志管理系统低。如果完成同步任务所用的时间比预计时间长,日志管理系统可能会不响应。
单线程是指程序执行时,所跑的程序路径(处理的东西)是连续顺序下来的,必须前面的处理好,后面的才会执行到。
单线程日志发送管理指的是:日志发送请求在同一时间,只能有一个任务在执行,不存在并发任务。在单线程日志发送管理中,如果上一次日志发送请求尚未完成,而新的日志发送请求又已产生,则会出现竞争关系,或导致日志信息不完整,影响日志管理系统的安全、可靠运行。
发明内容
针对现有技术中存在的缺陷,本发明的目的在于提供一种多线程日志发送管理的方法,算法简洁,调度清晰,采用多线程处理速度更快,通过同步任务队列避免竞争关系对日志管理的影响,易于维护。
为达到以上目的,本发明采取的技术方案是:
一种多线程日志发送管理的方法,其特征在于,包括如下步骤:
设定最大任务数Max,
触发日志发送事件sendLog,产生日志派发请求,
日志派发管理模块接收日志派发请求,
日志派发管理模块生成日志发送sendDataTask任务,并派发到同步任务队列,
日志发送sendDataTask任务在执行过程中,判定当前并行运行中的任务数量是否大于等于最大任务数Max,
如果大于等于最大任务数Max,则将任务持久化后得到日志持久化数据data n,n=1,2,3……,将日志持久化数据data n添加到数据缓存队列,
如果小于最大任务数Max,则执行以下步骤:
执行日志发送网络请求asycSend,
在日志发送网络请求结束后,生成继续日志发送sendNextTask任务,并派发到同步任务队列。
在上述技术方案的基础上,所述继续日志发送sendNextTask任务,从数据缓存队列中获取待发送的日志持久化数据data n,
如果数据缓存队列存在缓存数据,
则从队列头获取一条日志持久化数据data n,
然后执行日志发送网络请求asycSend,
在日志发送网络请求结束后,
生成继续日志发送sendNextTask任务,并派发到同步任务队列。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于北京酷我科技有限公司,未经北京酷我科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810336344.8/2.html,转载请声明来源钻瓜专利网。