自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

干掉xxl-job:elastic-job王者歸來?

開發(fā) 前端 開發(fā)工具
調(diào)度(Scheduling)在計算機領(lǐng)域是個龐大概念,CPU 調(diào)度、內(nèi)存調(diào)度、進(jìn)程調(diào)度等都可稱之為調(diào)度。

 調(diào)度(Scheduling)在計算機領(lǐng)域是個龐大概念,CPU 調(diào)度、內(nèi)存調(diào)度、進(jìn)程調(diào)度等都可稱之為調(diào)度。

[[334031]]

 

圖片來自 Pexels

它是指在特定的時機分配合理的資源去處理預(yù)先確定的任務(wù),用于在適當(dāng)?shù)臅r機觸發(fā)一個包含業(yè)務(wù)邏輯的應(yīng)用。調(diào)度無論在單機還是分布式環(huán)境中都是很重要的課題。

在單機環(huán)境,調(diào)度與底層操作系統(tǒng)脫離不了干系;而在分布式環(huán)境中,調(diào)度直接決定運行集群的投入和產(chǎn)出。調(diào)度的兩個核心要素是資源治理和觸發(fā)時機。

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

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

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

ElasticJob 是什么?

ElasticJob 是一個分布式調(diào)度解決方案,由兩個相互獨立的子項目 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è)計。

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

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),無需獨立的中心化調(diào)度節(jié)點,分布式下的每個任務(wù)節(jié)點均是以自調(diào)度的方式適時的調(diào)度作業(yè)。

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

架構(gòu)圖如下:

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

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

分片完畢后,主節(jié)點與從節(jié)點并無二致,均以自我調(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)圖如下:

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

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

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

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

ElasticJob 功能列表

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

彈性調(diào)度

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

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

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

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

 

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

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

分片如下圖所示:

 

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

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

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

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

 

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

資源分配

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

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

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

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

隨著 Kubernetes 的強勁發(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è)。如果每天凌晨需要花費數(shù)小時計算 T+1 的業(yè)務(wù)報表,沒有資源的管控,則無論報表作業(yè)是否啟動,都要為其分配足夠的資源。

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

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

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

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

采用作業(yè)實現(xiàn)的訂單系統(tǒng),可以通過 ElasticJob 實現(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è),并且完全開放了擴展接口,開發(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)等可擴展模塊從內(nèi)核模塊完全抽離。

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

未來規(guī)劃

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

在未來的規(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 也能夠獨立使用的不包含資源管控的純作業(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 的定位如下圖所示:

 

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

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

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

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

 

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

 

基石已經(jīng)搭建完成,歡迎開源愛好者加入 ElasticJob 社區(qū)的建設(shè)。

GitHub 地址:

  1. https://github.com/apache/shardingsphere-elasticjob-lite 

官方網(wǎng)站:

  1. http://shardingsphere.apache.org/elasticjob/ 

作者:張亮

簡介:京東數(shù)科數(shù)據(jù)研發(fā)負(fù)責(zé)人,Apache ShardingSphere 創(chuàng)始人&項目 VP、ElasticJob 創(chuàng)始人。熱愛開源,主導(dǎo)開源項目 ShardingSphere (原名 Sharding-JDBC) 和 Elastic-Job。擅長以 Java 為主分布式架構(gòu),推崇優(yōu)雅代碼,對如何寫出具有展現(xiàn)力的代碼有較多研究。目前主要精力投入在將 Apache ShardingSphere 打造為業(yè)界一流的金融級數(shù)據(jù)解決方案之上。Apache ShardingSphere 是 Apache 軟件基金會旗下的頂級項目,也是 Apache 軟件基金會首個分布式數(shù)據(jù)庫中間件。

編輯:陶家龍

 

責(zé)任編輯:武曉燕 來源: 51CTO技術(shù)棧
相關(guān)推薦

2022-03-26 17:13:22

ElasticJobxxl-job分布式

2025-02-18 14:08:14

2022-09-23 13:57:11

xxl-job任務(wù)調(diào)度中間件

2015-11-05 10:51:35

當(dāng)當(dāng)分布式調(diào)度開源項目

2023-01-04 09:23:58

2023-11-30 22:06:43

2024-09-09 08:11:12

2024-08-27 09:34:24

2021-01-28 07:32:14

框架分布式調(diào)度

2019-11-12 09:32:39

分布式elastic-job分片

2024-12-04 10:47:26

2024-07-31 08:18:40

2025-01-06 08:53:37

2021-12-26 19:07:51

MySQL存儲容器

2021-12-26 00:03:27

響應(yīng)式編程異步

2022-01-27 08:44:58

調(diào)度系統(tǒng)開源

2023-06-27 07:44:53

xxl-job分布式任務(wù)調(diào)度平臺

2022-12-29 08:32:50

xxl-job緩存Schedule

2023-11-07 07:56:40

2023-11-22 10:07:22

點贊
收藏

51CTO技術(shù)棧公眾號