Home | 簡體中文 | 繁體中文 | 雜文 | 知乎專欄 | Github | OSChina 博客 | 雲社區 | 雲棲社區 | Facebook | Linkedin | 視頻教程 | 打賞(Donations) | About
知乎專欄多維度架構 微信號 netkiller-ebook | QQ群:128659835 請註明“讀者”

8.2. 為什麼採用分散式計劃任務

起初,我們也跟大多數人一樣採用crontab調度程序,但隨着項目越來越大,系統越來越複雜,就抱漏出許多問題。

首先是高可用HA需求,當運行計劃任務的伺服器一旦出現故障,所有的計劃任務將停止工作。

其次是性能問題,越來越多的大型計劃任務程序出現,對CPU/IO密集操作,單個節點已經不能滿足我們的需求。

讓計劃任務7*24*365不間斷運行,必需有一套行之有效的方案才行,我意識到必須開發一個全新的分散式計劃任務框架,這樣開發人員無需關注怎樣實現分散式運行,集中寫任務即可。

我首先提出這個框架必需具備幾個特性:

分散式計劃任務需具備以下特性

  1. 故障轉移,我們至少使用兩個節點,當一個節點出現問題,通過健康狀態檢查程序,另一個節點會自動接管任務。

  2. 分散式運行,一個任務可以運行在多個節點之上,能夠同時運行,能夠調整運行的前後順序,能夠並發互斥控制。

  3. 節點可動態調整,最少兩個節點,可以隨時新增節點,卸載節點。

  4. 狀態共享,任務可能會涉及的通信,例如狀態同步等等。