知乎專欄 | 多維度架構 | 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者” |
起初,我們也跟大多數人一樣採用crontab調度程序,但隨着項目越來越大,系統越來越複雜,就抱漏出許多問題。
首先是高可用HA需求,當運行計劃任務的伺服器一旦出現故障,所有的計劃任務將停止工作。
其次是性能問題,越來越多的大型計劃任務程序出現,對CPU/IO密集操作,單個節點已經不能滿足我們的需求。
讓計劃任務7*24*365不間斷運行,必需有一套行之有效的方案才行,我意識到必須開發一個全新的分散式計劃任務框架,這樣開發人員無需關注怎樣實現分散式運行,集中寫任務即可。
我首先提出這個框架必需具備幾個特性:
分散式計劃任務需具備以下特性
故障轉移,我們至少使用兩個節點,當一個節點出現問題,通過健康狀態檢查程序,另一個節點會自動接管任務。
分散式運行,一個任務可以運行在多個節點之上,能夠同時運行,能夠調整運行的前後順序,能夠並發互斥控制。
節點可動態調整,最少兩個節點,可以隨時新增節點,卸載節點。
狀態共享,任務可能會涉及的通信,例如狀態同步等等。