條條思路通羅馬

01. 拋磚


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


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


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


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


舉個業務場景:對接銀行的某理財產品,若是想統計收益,那麼最經常使用的方式即是:雙方約定固定時間,定時從銀行獲取收益文件,而後解析收益文件入庫(任務 A);而後進行執行收益記帳任務(任務 B)。設計


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


02. 思考


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




03. 何解


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


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

任務編號:JOB_IDget

前置任務編號:PRE_JOB_ID


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

任務編號:JOB_ID

跑批時間:BATCH_DATE


最後仍是配個圖,釋義一下,我相信你確定能看懂。




04. 昇華


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


https://azkaban.github.io/


05. 最後


條條思路通羅馬,我相信你確定會有不少獨特的看法,也不乏好的實現思路,藉助《聊齋志異》中的一句話「黃狸黑狸,得鼠者雄」,其實也就是鄧爺爺說的「無論是黑貓白貓,能抓住老鼠的就是好貓」。


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


畫圖不易,碼出能讓你一看就懂的文章更不易。若是感受稍微有點意思,不用讚揚,多多分享轉發給你的朋友就很感激。

相關文章
相關標籤/搜索