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