工作篇之 定時任務斷電處理

2021-10-10 08:48:45 字數 917 閱讀 8667

定時任務是我們在工作中經常使用的一種處理方法,它很好用,但是有時候也會遇到一些問題比如斷電的時候,它不執行,那麼資料和任務也就無法確保有無遺漏。

近期在工作中遇到了資料抓取存入新的表的問題,處理這個問題首先需要對資料進行抓取,這個抓取不再是一開始時的簡單抓取全部,再全部插入新建立的表。

業務場景是:先巢狀多個表抓取最新完成的作業資料,再將資料插入表(下面暫時命名為t1)進行處理分析。我一開始的採取的做法很笨,後面請教過別人了解了不同的思路,下面

主要對這些思路進行逐一分析,有什麼不同的見解或者更好的建議大家也可以指點出來共同**。

思路一:最笨最粗暴的方法就是,每次查詢出(全部)資料,都將這些資料將之前的t1表的資料覆蓋掉(但是不推薦這麼做,因為我們一般只針對的新的資料進行操作,已有的資料有可能已經被引用或者資料視覺化處理了)。

思路二:將查出來的資料和t1表的資料做比較,將最新的資料插入表t1(我最開始採用的就是這種方法,我將最新的資料拿建立時間在mysql中拼接另外的乙個字段形成比較欄位flaga,然後在t1中也拿資料的時間字段拼接另外乙個欄位來比較,若不存在則將不存在的資料進行插入。這個方法的弊端最明顯的是資料量大的時候就不適用)

思路三:(這也是我最終使用的方法:在抓取的資料來源中找乙個主要依託表--多表聯查也會有乙個主要依賴的表-->依賴這個表進行資料查詢,在這個表中新增乙個抓取標誌欄位capture,在資料庫中預設建立預設值為0--未抓取,已抓取的資料修改欄位為1,代表已抓取。每次查詢只查詢該字段為0的資料,再進行插入。插入完畢後將該部分資料的抓取字段更新值置1)

思路四:(這個是和朋友聊起來的時候他給的建議,每次定時任務執行的時候記錄一下時間,到下一次任務執行的時候取資料表t1中最新插入的時間是否是預期上次任務執行的時間,若是則查上次執行時間到當前時間的資料即可,若不是則再往上一次執行時間比較)。

目前就只想到這四種思路,如果有更好的思路,希望可以提出來共同學習談論。

Linux之crontab定時任務篇

為當前使用者建立cron服務 鍵入 crontab e 編輯crontab服務檔案 例如新增一行指令碼 檢視該使用者下的crontab服務是否建立成功,用 crontab l 命令 啟動crontab服務 一般啟動服務用 sbin service crond start 若是根使用者的cron服務可...

SpringBoot 定時任務篇

一.基於註解 scheduled預設為單執行緒,開啟多個任務時,任務的執行時機會受上乙個任務執行時間的影響。1 建立定時器 component configuration 1.主要用於標記配置類,兼備component的效果。enablescheduling 2.開啟定時任務 public clas...

程序 工作 定時任務

檢視總程序ps aux 系統主要程序 健康狀態 top d n,n代表top更新秒數,預設每3秒更新 top介面互動 pcpu使用率排序 預設 m記憶體使用率 npid排序 pstree process tree jobs l,檢視後台程式 vmstat ps top virtual memory ...