敲黑板,講重點。今天我先拋一開放性話題,也是我平時面試候選人時常常談及的,看看你有沒有相關解決思路?git
Q:有A、B兩個定時任務,其中任務 B 要在任務 A 執行完成後才能執行,如何保證任務的執行順序?程序員
A:潛意識:啥、啥、啥,一臉懵?心情只能用下圖來形容。github
從事金融相關研發的程序員,多多少少都瞭解,一個完整的系統,會像鐘錶同樣,背後隱藏了諸多的齒輪任務在運轉。其中系統中的每一個定時任務之間,不免會有前置依賴關係。面試
舉個業務場景:對接銀行的某理財產品,若是想統計收益,那麼最經常使用的方式即是:雙方約定固定時間,定時從銀行獲取收益文件,而後解析收益文件入庫(任務 A);而後進行執行收益記帳任務(任務 B)。設計
那麼如何保證收益記帳任務 B 執行時,獲取收益文件任務 A 已經執行完成了呢?3d
能用圖說懂的,再也不瞎白話,一言不合,直接畫圖,上圖進行協助思考,相信你仔細看圖,確定能搞清楚咋回事。orm
流程搞清楚,那麼實現就分分鐘。簡單說一下最原始、最簡單的實現思路。cdn
首先設計一張批量任務定義的表 t_job_define,摘取兩個核心字段示意一下。blog
任務編號:JOB_IDget
前置任務編號:PRE_JOB_ID
接着設計一張批量任務跑批詳情表 t_job_run_detail,摘取兩個核心的字段示意一下。
任務編號:JOB_ID
跑批時間:BATCH_DATE
最後仍是配個圖,釋義一下,我相信你確定能看懂。
不喜歡土槍的,不妨嘗試一下土槍換炮。有精力的你,不妨瞭解一下阿茲卡班(Azkaban),畢竟每一個技術都不須要太深刻,用到的時候深刻也不晚。可是必定要知道,技多不壓身。
https://azkaban.github.io/
條條思路通羅馬,我相信你確定會有不少獨特的看法,也不乏好的實現思路,藉助《聊齋志異》中的一句話「黃狸黑狸,得鼠者雄」,其實也就是鄧爺爺說的「無論是黑貓白貓,能抓住老鼠的就是好貓」。
今天的分享到這就結束了,主要想表達一下簡單的思想,你 get 到了沒?
畫圖不易,碼出能讓你一看就懂的文章更不易。若是感受稍微有點意思,不用讚揚,多多分享轉發給你的朋友就很感激。