什么是elastic-job

這篇文章主要講解了“什么是elastic-job”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“什么是elastic-job”吧!

創(chuàng)新互聯(lián)建站是專業(yè)的肥西網(wǎng)站建設(shè)公司,肥西接單;提供網(wǎng)站設(shè)計、成都網(wǎng)站制作,網(wǎng)頁設(shè)計,網(wǎng)站設(shè)計,建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行肥西網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊,希望更多企業(yè)前來合作!

ElasticJob 誕生于 2015 年,當(dāng)時業(yè)界雖然有 QuartZ 等出類拔萃的定時任務(wù)框架,但缺乏分布式方面的探索。

分布式調(diào)度云平臺產(chǎn)品的缺失,使得 ElasticJob  從出現(xiàn)伊始便備受關(guān)注。它有效的彌補(bǔ)了作業(yè)在分布式領(lǐng)域的短板,并且提供了一站式的自動化運(yùn)維管控端。

ElasticJob 在技術(shù)選型時,選擇站在了巨人的肩膀上而不是重復(fù)制造輪子的理念,將定時任務(wù)事實(shí)標(biāo)準(zhǔn)的 QuartZ 與分布式協(xié)調(diào)的利器  ZooKeeper 完美結(jié)合,快速而穩(wěn)定的搭建了全新概念的分布式調(diào)度框架。

ElasticJob 是什么?

ElasticJob 是一個分布式調(diào)度解決方案,由兩個相互獨(dú)立的子項目 ElasticJob Lite 和 ElasticJob Cloud  組成。

ElasticJob Lite 定位為輕量級無中心化解決方案,使用 jar 的形式提供分布式任務(wù)的協(xié)調(diào)服務(wù)。

ElasticJob Cloud 采用自研 Mesos Framework 的解決方案,額外提供資源治理、應(yīng)用分發(fā)以及進(jìn)程隔離等功能。

它通過彈性調(diào)度、資源管控、以及作業(yè)治理的功能,打造一個適用于互聯(lián)網(wǎng)場景的分布式調(diào)度解決方案,并通過開放的架構(gòu)設(shè)計,提供多元化的作業(yè)生態(tài)。

使用 ElasticJob 能夠讓開發(fā)工程師不再擔(dān)心任務(wù)的線性吞吐量提升等非功能需求,使開發(fā)工程師能夠更加專注于面向業(yè)務(wù)編碼設(shè)計。

同時,它能夠解放運(yùn)維工程師,使他們不必再擔(dān)心任務(wù)的可用性和相關(guān)管理需求,只通過輕松的增加服務(wù)節(jié)點(diǎn)即可達(dá)到自動化運(yùn)維的目的。

ElasticJob 調(diào)度模型

與大部分的作業(yè)平臺不同,ElasticJob 的調(diào)度模型劃分為支持線程級別調(diào)度的進(jìn)程內(nèi)調(diào)度 ElasticJob Lite,和進(jìn)程級別調(diào)度的  ElasticJob Cloud。

進(jìn)程內(nèi)調(diào)度

ElasticJob Lite 是面向進(jìn)程內(nèi)的線程級調(diào)度框架。通過 ElasticJob ,作業(yè)能夠透明化的與業(yè)務(wù)應(yīng)用系統(tǒng)相結(jié)合。

它能夠方便的與 Spring 、Dubbo 等 Java 框架配合使用,在作業(yè)中可自由使用 Spring 注入的 Bean,如數(shù)據(jù)源連接池、Dubbo  遠(yuǎn)程服務(wù)等,更加方便的貼合業(yè)務(wù)開發(fā)。

ElasticJob Lite 與業(yè)務(wù)應(yīng)用部署在一起,其生命周期與業(yè)務(wù)應(yīng)用保持一致,是典型的嵌入式輕量級架構(gòu)。

ElasticJob Lite 非常適合于資源使用穩(wěn)定、部署架構(gòu)簡單的普通 Java 應(yīng)用,可以理解為 Java 開發(fā)框架。

ElasticJob Lite 本身是無中心化架構(gòu),無需獨(dú)立的中心化調(diào)度節(jié)點(diǎn),分布式下的每個任務(wù)節(jié)點(diǎn)均是以自調(diào)度的方式適時的調(diào)度作業(yè)。

任務(wù)之間只需要一個注冊中心來對分布式場景下的任務(wù)狀態(tài)進(jìn)行協(xié)調(diào)即可,目前支持 ZooKeeper 和 ETCD 作為注冊中心。

架構(gòu)圖如下:

什么是elastic-job

ElasticJob 的產(chǎn)品定位與新版本設(shè)計理念

通過圖中可看出,ElasticJob Lite 的分布式作業(yè)節(jié)點(diǎn)通過選舉獲取主節(jié)點(diǎn),并通過主節(jié)點(diǎn)進(jìn)行分片。

分片完畢后,主節(jié)點(diǎn)與從節(jié)點(diǎn)并無二致,均以自我調(diào)度的方式執(zhí)行任務(wù)。

進(jìn)程級調(diào)度

ElasticJob Cloud 擁有進(jìn)程內(nèi)調(diào)度和進(jìn)程級別調(diào)度兩種方式。由于 ElasticJob Cloud  能夠?qū)ψ鳂I(yè)服務(wù)器的資源進(jìn)行控制,因此其作業(yè)類型可劃分為常駐任務(wù)和瞬時任務(wù)。

常駐任務(wù)類似于 ElasticJob  Lite,是進(jìn)程內(nèi)調(diào)度;瞬時任務(wù)則完全不同,它充分的利用了資源分配的削峰填谷能力,是進(jìn)程級的調(diào)度,每次任務(wù)的會啟動全新的進(jìn)程處理。

ElasticJob Cloud 需要通過 Mesos 對資源進(jìn)行控制,并且通過部署在 Mesos Master 的調(diào)度器進(jìn)行任務(wù)和資源的分配。Cloud  采用中心化架構(gòu),將調(diào)度中心的高可用交由 Mesos 管理。

它的架構(gòu)圖如下:

什么是elastic-job

ElasticJob 的產(chǎn)品定位與新版本設(shè)計理念

通過圖中可看出,ElasticJob Cloud 除了擁有 Lite 的全部能力之外,還擁有資源分配和任務(wù)分發(fā)的能力。

它將作業(yè)的開發(fā)、打包、分發(fā)、調(diào)度、治理、分片等一些列的生命周期完全托管,是真正的作業(yè)云調(diào)度系統(tǒng)。

相比于 ElasticJob Lite 的簡單易用,ElasticJob Cloud 對 Mesos  的強(qiáng)依賴增加了系統(tǒng)部署的復(fù)雜度,因此更加適合大規(guī)模的作業(yè)系統(tǒng)。

ElasticJob 功能列表

ElasticJob 功能主要有彈性調(diào)度、資源分配、作業(yè)治理和可視化管控。

彈性調(diào)度

彈性調(diào)度是 ElasticJob 最重要的功能,也是這款產(chǎn)品名稱的由來。它是一款能夠讓任務(wù)通過分片進(jìn)行水平擴(kuò)展的任務(wù)處理系統(tǒng)。

ElasticJob 中任務(wù)分片項的概念,使得任務(wù)可以在分布式的環(huán)境下運(yùn)行,每臺任務(wù)服務(wù)器只運(yùn)行分配給該服務(wù)器的分片。

隨著服務(wù)器的增加或宕機(jī),ElasticJob  會近乎實(shí)時的感知服務(wù)器數(shù)量的變更,從而重新為分布式的任務(wù)服務(wù)器分配更加合理的任務(wù)分片項,使得任務(wù)可以隨著資源的增加而提升效率。

舉例說明,如果作業(yè)分為 4 片,用兩臺服務(wù)器執(zhí)行,則每個服務(wù)器分到 2 片,如下圖所示:

什么是elastic-job

ElasticJob 的產(chǎn)品定位與新版本設(shè)計理念

當(dāng)新增加作業(yè)服務(wù)器時,ElasticJob  會通過注冊中心的臨時節(jié)點(diǎn)的變化感知到新服務(wù)器的存在,并在下次任務(wù)調(diào)度的時候重新分片,新的服務(wù)器會承載一部分作業(yè)分片。

分片如下圖所示:

什么是elastic-job

ElasticJob 的產(chǎn)品定位與新版本設(shè)計理念

當(dāng)作業(yè)服務(wù)器在運(yùn)行中宕機(jī)時,注冊中心同樣會通過臨時節(jié)點(diǎn)感知,并將在下次運(yùn)行時將分片轉(zhuǎn)移至仍存活的服務(wù)器,以達(dá)到作業(yè)高可用的效果。

本次由于服務(wù)器宕機(jī)而未執(zhí)行完的作業(yè),則可以通過失效轉(zhuǎn)移的方式繼續(xù)執(zhí)行。

作業(yè)高可用如下圖所示:

什么是elastic-job

ElasticJob 的產(chǎn)品定位與新版本設(shè)計理念

資源分配

在導(dǎo)讀中提到過,調(diào)度是指在適合的時間將適合的資源分配給任務(wù),并使其生效。

ElasticJob 具備資源分配的能力,它能夠像分布式的操作系統(tǒng)一樣調(diào)度任務(wù)。

資源分配是借由 Mesos 實(shí)現(xiàn)的,由 Mesos 負(fù)責(zé)分配任務(wù)聲明的所需資源(CPU 和內(nèi)存),并將分配出去的資源進(jìn)行隔離。ElasticJob  在獲取到資源之后才會執(zhí)行任務(wù)。

考慮到 Mesos 系統(tǒng)部署相對復(fù)雜,因此 ElasticJob 將這部分拆分至 ElasticJob Cloud 部分,供高級用戶使用。

隨著 Kubernetes 的強(qiáng)勁發(fā)展,ElasticJob 未來也會完成 Cloud 部分與它的對接。

作業(yè)治理

作業(yè)在分布式場景下的高可用、失效轉(zhuǎn)移、錯過作業(yè)重新執(zhí)行等行為的治理和協(xié)調(diào)。

可視化管控端

主要包括作業(yè)的增刪改查管控端、執(zhí)行歷史記錄查詢、配置中心的管理等。

ElasticJob 典型應(yīng)用場景

ElasticJob 著重解決與復(fù)雜任務(wù)、資源導(dǎo)向任務(wù)和業(yè)務(wù)應(yīng)用任務(wù)這幾個方面的問題。

復(fù)雜任務(wù)

數(shù)據(jù)遷移:如果將百億的數(shù)據(jù)從一組數(shù)據(jù)庫集群遷移至另一組數(shù)據(jù)庫集群,單線程的作業(yè)可能需要幾天到幾周不等。

通過 ElasticJob 的彈性分片能力,可以大幅減少海量數(shù)據(jù)遷移所需要的時間。

資源導(dǎo)向任務(wù)

占用大量計算資源的報表作業(yè)。如果每天凌晨需要花費(fèi)數(shù)小時計算 T+1 的業(yè)務(wù)報表,沒有資源的管控,則無論報表作業(yè)是否啟動,都要為其分配足夠的資源。

ElasticJob 將作業(yè)分為常駐作業(yè)和瞬時作業(yè),對于報表類作業(yè),瞬時作業(yè)是非常適合的。

它能否在作業(yè)啟動時獲取資源,在作業(yè)結(jié)束后歸還資源,做到真正的削峰填谷,更加合理的利用資源。

業(yè)務(wù)應(yīng)用

訂單拉取作業(yè):訂單系統(tǒng)大多采用消息中間件或作業(yè)的方式實(shí)現(xiàn)訂單拉取,用于將訂單生成系統(tǒng)和后端履約系統(tǒng)解耦,以便于前后端流量分離。

采用作業(yè)實(shí)現(xiàn)的訂單系統(tǒng),可以通過 ElasticJob 實(shí)現(xiàn)訂單相關(guān)業(yè)務(wù)邏輯,可以方便的利用外圍系統(tǒng)所提供的依賴注入服務(wù),無縫的融入業(yè)務(wù)端研發(fā)。

ElasticJob 新版本設(shè)計理念

經(jīng)過了一個多月的開發(fā),ElasticJob 社區(qū)近期計劃發(fā)布 3.0.0-alpha,以作為它進(jìn)入 Apache 軟件基金會的第一個發(fā)布版本。

它的主要功能包括:

作業(yè)生態(tài)圈

靈活定制化作業(yè)是 3.x 版本的最重要設(shè)計變革。新版本基于 Apache ShardingSphere 可插拔架構(gòu)的設(shè)計理念,打造了全新作業(yè)  API。

意在使開發(fā)者能夠更加便捷且相互隔離的方式拓展作業(yè)類型,打造 ElasticJob 作業(yè)的生態(tài)圈。

ElasticJob 提供靈活的作業(yè) API,它將作業(yè)解耦為作業(yè)接口和執(zhí)行器接口。用戶可以定制化全新的作業(yè)類型,諸如腳本執(zhí)行、HTTP  服務(wù)執(zhí)行、大數(shù)據(jù)類作業(yè)、文件類作業(yè)等。

目前 ElasticJob 內(nèi)置了腳本執(zhí)行作業(yè),并且完全開放了擴(kuò)展接口,開發(fā)者可以通過 SPI 的方式引入新的作業(yè)類型,并且可以便捷的回饋至社區(qū)。

多元化調(diào)度器

在保留原有的基于 Cron 的時間觸發(fā)調(diào)度器的基礎(chǔ)上,增加了一次性的調(diào)度 API,為 ElasticJob 增加了時間維度之外的全新調(diào)度維度。

微內(nèi)核&生態(tài)分離

抽象作業(yè)內(nèi)核模塊,將作業(yè)執(zhí)行軌跡追蹤等輔助功能以及作業(yè)生態(tài)等可擴(kuò)展模塊從內(nèi)核模塊完全抽離。

作業(yè)執(zhí)行軌跡追蹤模塊作為二級生態(tài),修改了之前只支持 MySQL 作為存儲介質(zhì)的限制,完全開放持久化的適配。

未來規(guī)劃

3.0.0 的版本作為一個快速給社區(qū)回饋的版本,并未進(jìn)行顛覆性的革新,而是嘗試將項目內(nèi)核一點(diǎn)一滴的解耦。

在未來的規(guī)劃中,ElasticJob 將大刀闊斧的向前邁進(jìn),主要的規(guī)劃如下:

作業(yè)依賴

支持基于有向無環(huán)圖(DAG)的作業(yè)依賴。依賴包含基于作業(yè)整體維度的依賴,以及基于作業(yè)分片項的依賴,打造更加靈活的作業(yè)治理解決方案。

調(diào)度執(zhí)行分離

將調(diào)度器和執(zhí)行器完全分離。調(diào)度器可以與執(zhí)行器一起部署,即為 ElasticJob Lite 的無中心化輕量級版本;調(diào)度器可以與執(zhí)行器分離部署,即為  ElasticJob Cloud 的資源管控的一站式分布式調(diào)度系統(tǒng)。

更加易用的云管產(chǎn)品

將目前僅支持 Mesos 的 ElasticJob cloud 打造為支持 Mesos 和 Kubernetes 的作業(yè)云管平臺,并提供無 Mesos 和  Kubernetes 也能夠獨(dú)立使用的不包含資源管控的純作業(yè)管控平臺。

可插拔生態(tài)

與 Apache ShardingSphere 一脈相承,ElasticJob 也將提供更加可插拔和模塊化架構(gòu),為開發(fā)者提供基礎(chǔ)設(shè)施。

開發(fā)者可以方便的基于 ElasticJob 二次開發(fā),添加各種定制化功能,包括但不限于作業(yè)類型(如:大數(shù)據(jù)作業(yè)、HTTP  作業(yè)等)、注冊中心類型(如:Eureka 等)、執(zhí)行軌跡存儲介質(zhì)(如其他數(shù)據(jù)庫類型)等。

ElasticJob 的定位如下圖所示:

什么是elastic-job

ElasticJob 的產(chǎn)品定位與新版本設(shè)計理念

關(guān)于 ElasticJob 社區(qū)

ElasticJob 社區(qū)的目標(biāo)是成為和 Apache ShardingSphere 一樣的 Apache  軟件基金會的頂級項目,達(dá)成更廣泛的應(yīng)用。

項目重啟的這段時間,ElasticJob 持續(xù)在 GitHub 的周和月度排行榜上有名:

什么是elastic-job

最近一個月,ElasticJob 社區(qū)合并了 152 個 Pull Requests,關(guān)閉了 105 個 Issues;25個提交者總共 158  次提交,完成了4w+ 行代碼的改動。

什么是elastic-job

感謝各位的閱讀,以上就是“什么是elastic-job”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對什么是elastic-job這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是創(chuàng)新互聯(lián),小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

分享名稱:什么是elastic-job
本文來源:http://muchs.cn/article30/pdgcso.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、微信公眾號、企業(yè)建站、網(wǎng)站導(dǎo)航、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)