面試官:如何保證定時任務的執行順序呢?


01. 拋磚

敲黑板,講重點。今天我先拋一開放性話題,也是我平時面試候選人時經常談及的,看看你有沒有相關解決思路?

 

Q:有A、B兩個定時任務,其中任務 B 要在任務 A 執行完成后才能執行,如何保證任務的執行順序?

 

A:潛意識:啥、啥、啥,一臉懵?心情只能用下圖來形容。

640?wx_fmt=png

 

從事金融相關研發的程序員,多多少少都了解,一個完整的系統,會像鍾表一樣,背后隱藏了諸多的齒輪任務在運轉。其中系統中的每個定時任務之間,難免會有前置依賴關系。

 

舉個業務場景:對接銀行的某理財產品,如果想統計收益,那么最常用的方式便是:雙方約定固定時間,定時從銀行獲取收益文件,然后解析收益文件入庫(任務 A);然后進行執行收益記賬任務(任務 B)。

 

那么如何保證收益記賬任務 B 執行時,獲取收益文件任務 A 已經執行完成了呢?

 

02. 思考

 

能用圖說懂的,不再瞎白話,一言不合,直接畫圖,上圖進行協助思考,相信你仔細看圖,肯定能搞清楚咋回事。

 

640?wx_fmt=png

 

 

03. 何解

 

流程搞清楚,那么實現就分分鍾。簡單說一下最原始、最簡單的實現思路。

 

首先設計一張批量任務定義的表 t_job_define,摘取兩個核心字段示意一下。

任務編號:JOB_ID

前置任務編號:PRE_JOB_ID

 

接着設計一張批量任務跑批詳情表 t_job_run_detail,摘取兩個核心的字段示意一下。

任務編號:JOB_ID

跑批時間:BATCH_DATE

 

最后還是配個圖,釋義一下,我相信你肯定能看懂。

 

640?wx_fmt=png

 

 

04. 升華

 

不喜歡土槍的,不妨嘗試一下土槍換炮。有精力的你,不妨了解一下阿茲卡班(Azkaban),畢竟每個技術都不需要太深入,用到的時候深入也不晚。但是一定要知道,技多不壓身

 

https://azkaban.github.io/

640?wx_fmt=png

 

05. 最后

 

條條思路通羅馬,我相信你肯定會有很多獨特的見解,也不乏好的實現思路,借助《聊齋志異》中的一句話“黃狸黑狸,得鼠者雄”,其實也就是鄧爺爺說的“不管是黑貓白貓,能抓住老鼠的就是好貓”。

 

今天的分享到這就結束了,主要想表達一下簡單的思想,你 get 到了沒?

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM