[發明專利]一種多線程日志發送管理的方法有效
| 申請號: | 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.szxzyx.cn/pat/books/201810336344.8/2.html,轉載請聲明來源鉆瓜專利網。





