分散式排程中介軟體Elastic-Job2.1.0釋出:CloudNative里程碑版本

boxti發表於2017-07-05

Elastic-Job 是什麼?
Elastic-Job是一個開源的分散式排程中介軟體,由兩個相互獨立的子專案Elastic-Job-Lite和Elastic-Job-Cloud組成。

Elastic-Job-Lite為輕量級無中心化解決方案,使用jar包提供分散式任務的排程和治理。 Elastic-Job-Cloud是一個Mesos Framework,依託於Mesos額外提供資源治理、應用分發以及程式隔離等服務。

專案已開源接近2年,目前為止已更新發布16次。Elastic-Job已在分散式作業領域佔有一席之地,明確採納的公司已超過50家,未收錄的採納公司不計其數,更有多個開源產品衍生自Elastic-Job。

專案的開源地址:

https://github.com/dangdangdotcom/elastic-job

Elastic-Job-Lite和Elastic-Job-Cloud的定位是什麼?
Elastic-Job-Lite定位為純粹的作業中介軟體,僅關注分散式排程、協調以及分片等核心功能,將作業部署、資源分配等功能交於Mesos或Kubernetes處理;而Elastic-Job-Cloud提供一體化私有云服務,將分散式排程、作業部署、資源分配、監控、日誌處理等提供完善的解決方案。

從功能上看Elastic-Job-Cloud更加完善,但依託於Mesos,使用複雜度較高,不易整合進公司現有系統,因而更加輕量級的Elastic-Job-Lite在實際使用中更受青睞。

之前版本的Elastic-Job-Lite有什麼缺失?
主要缺失就是對Cloud Native的支援。原來的Elastic-Job-Lite是面向靜態場景的,簡單說就是每臺作業伺服器只能部署一個作業名稱相同的作業例項,而當這個作業例項下線時,該作業伺服器則顯示為下線狀態。這對於使用物理伺服器的場景來說比較適合,而對於使用Docker的場景,則不太友好,原因是:

每次作業上線伺服器IP可能產生變化,舊的伺服器IP不會再使用,從而產生垃圾資料。Docker的治理系統可以在一臺物理伺服器上啟動多例項,而僅支援單伺服器單例項的Elastic-Job使用起來諸多不便,需要Docker的治理系統額外配置。Elastic-Job 2.1.0版本是如何做到Cloud Native的?
新版本支援單伺服器跑任意多的相同作業例項,原作業例項標識由IP地址替換為作業啟動瞬時產生的UUID。在新的Cloud Native架構下,作業物理伺服器概念大幅弱化。為了向前相容,作業物理伺服器僅包含控制伺服器是否可以禁用這一功能。為了更加純粹的實現作業核心,作業物理伺服器統計和操作功能未來可能刪除,可下放至容器治理部署系統。

使用新增加的執行例項概念全面替換原伺服器概念,Elastic-Job-Lite與容器治理系統的對接由原來的伺服器維度轉變為執行例項維度,每個執行例項都是動態的,會隨著作業下線而消失。

習慣根據伺服器靜態分配作業的使用者也不用太過擔心新版本帶來的變化,伺服器資訊以另外一個維度可選的存在於作業管理資訊中,使用者仍然可以繼續使用伺服器靜態部署的方式。

通過這次修改,Elastic-Job-Lite已經可以非常容易的對接Mesos + Marathon以及Kubernetes,相信使用者可以非常輕鬆的搭建一個深度定製版的作業私有云。

Elastic-Job 2.1.0版本還有哪些關鍵更新?
Elastic-Job 2.1.0版本是僅針對Elastic-Job-Lite進行全面提升。它主要包含以下4方面的提升:

單伺服器可執行任意多的相同作業例項。Cloud Native,這裡不再細說。自修復能力使穩定性進一步提升。之前的Elastic-Job經過一年多的洗禮,穩定性已然不錯,但是分散式場景由於環境複雜,很難完全通過正向的方式保證每個節點間的狀態完全同步。而Elastic-Job原來的版本在網路不穩定的情況下,可能發生主節點選舉卡死,或某個分片不執行的情況,可以通過重啟應用修復。新版本的Elastic-Job-Lite使用非同步執行緒,定期(可配置時間間隔)檢測叢集中不正確的狀態,以反向檢查的方式查詢並自動修復分散式的不一致,為分散式穩定性的完善增加了最後一塊拼圖。作業操作梳理。新版本將操作分為作業、例項、分片以及伺服器4個維度,去除了容易混淆的暫停操作,對禁用功能進一步的增強,可以從各個維度控制整體作業或獨立分片。控制檯介面提升。完全重寫了控制檯介面並且增加了事件追蹤介面展示。新介面提供更加清新的使用者體驗,甚至包括主題皮膚切換,歡迎大家親自體會。Elastic-Job 2.1.0版本與舊版本相容麼?
新里程碑版本做了如此大的修改和提升,那麼從舊版本升級至新版本有哪些地方需要修改?相信很多老使用者有這樣的疑問。答案是:不需要做任何改動。

Elastic-Job 2.1.0雖然對資料的儲存結構進行了調整,但完全相容原有資料結構,並且API和配置並未改變,使用者可以平滑升級。

Elastic-Job 下一步要做什麼?
當前的Elastic-Job已支援事件驅動,但並不完善。因此Elastic-Job下個功能將針對事件驅動進行提升,將其分散式“定時任務”中介軟體的定位徹底改變為分散式“任務”中介軟體。

另外還有很多功能需要繼續完善,如作業依賴的支援等。

對於新手來說使用Elastic-Job 很難麼?
Elastic-Job-Cloud對於新手來說使用起來並不太容易,需要對Mesos技術棧有一定了解。

Elastic-Job-Lite則非常簡單,只需在pom.xml中引入Elastic-Job的maven座標,並且參照在github上的example編寫幾行程式碼即可,唯一的外部依賴是Zookeeper。

最後,請允許我再重複一次,專案的開源地址:https://github.com/dangdangdotcom/elastic-job

歡迎使用、吐槽和提出建議。

本文轉自d1net(轉載)


相關文章