7 分布式定時任務調度框架

先簡單介紹下分布式定時任務調度框架的使用場景和功能和架構,然后再介紹世面上常見的產品

我們在大型的復雜的系統下,會有大量的跑批,定時任務的功能,如果在獨立的子項目中單獨去處理這些任務,隨著業務的復雜度的提高,大量的任務將很難進行統一的管理,出現bug以后問題也很難排查,最后將成為一種災難。所以我們引入了分布式定時任務調度框架,統一管理這些定時任務和跑批的功能,出現問題也容易統一管理

1. 分布式定時任務功能

1.1 定時任務的執行、任務管理、執行日志管理
1.2 定時任務架構的高可用。集群、分片、執行失敗任務的處理
1.3 一些擴展功能:可視化的運維,多語言支持、任務編排等

2. 調度中心的整體架構
一個分布式定時任務框架主要分為下面三個模塊

2.1 調度中心: 負責接收并分配任務,并按照置頂的配置規則執行
2.2 任務執行: 處理實際業務處理并執行,執行完成以后反饋給調度中心
2.3 監控中心: 主要負責節點管理,任務隊列管理,監控管理等。

常見的分布式調度框架:xxljob

xxl-job是我極力推薦的框架,在我待過的幾家中小型的互聯網公司基本上都選用該框架。xxl-job開放源碼,簡單高效,中小企業用的很多。
1.xxl-job經過持續的迭代,修復了很多bug。2.0開始引入新特性,耦合性降低
2.搭建起來也非常簡單,開箱即用。
3.源碼開放
4.源碼也有很多值得學習的地方,雖然剛發布的時候會有很多資深的程序員詬病,但經過多年的發展維護,已經非常穩定。代碼非常樸實,沒有那些花里胡哨的花樣

xxl-job架構如下圖
在這里插入圖片描述

調度中心: 用于發布我們需要的執行任務,并且可以控制任務的添加、刪除、啟動和停止,以及維護日志。并且可以在操作界面進行設置。
執行器: 執行具體業務端,調度中心根據注冊的執行器,按照算法分配任務執行。每一個執行器有唯一的appname,與調度中心管理的執行器名稱一致,調度中心才分配任務給執行器
任務: 設置執行策略、分片機制、任務、執行器等信息。執行器管理中的appname找到執行器的appname,這樣任務就會分配給對應的執行器。

xxl-job的調度原理:
1.調度中心通過http協議請求執行器中的服務,默認的端口是9999
2.執行器執行業務邏輯代碼
3.執行器執行完成業務代碼后回調調度中心的服務,調度中心開放了一套針對執行器材的API

xxl-job的分片原理
當執行器以集群方式部署的情況下,調度任務的策略選擇"分片廣播"的情況下,一次調度任務會以廣播的形勢觸發集群中所有的執行器,同時傳遞分片參數,可以根據分片參數開發分片任務。
xxl-job的架構雖然簡單但是用起來是真的爽,沒有那一套高大上的架構設計,但是就是好用

常見的分布式調度架構:elastic-job

elastic-job分為兩個獨立的大塊。一個是lite-core(核心去中心化的調度),一個是cloud(監控平臺).
在這里插入圖片描述

schedule: 會選取一個leader,作為分配執行任務的(包括分片)的機器。
simple: 實現simplejob接口,該接口提供單一的方法覆蓋,該方法定時執行并提供了彈性擴容和分片的功能
dataflow: dataflow類型用于處理數據流,需實現DataflowJob接口。該接口提供2個方法可供覆蓋,分別用于抓取(fetchData)和處理(processData)數據
script: script類型作業意為腳本類型作業,支持shell,python,perl等所有類型腳本。只需通過控制臺或代碼配置scriptCommandLine即可,無需編碼。執行腳本路徑可包含參數,參數傳遞完畢后,作業框架會自動追加最后一個參數為作業運行時信息。

調度原理
在這里插入圖片描述

elastic-job的分布式鎖

通過zookeeper做的分布式鎖,先選取leader再做分配工作

常見的分布式調度框架:Schedulerx2.0

分布式任務調度SchedulerX是阿里巴巴自研的基于Akka架構的分布式任務調度平臺,兼容開源XXL-JOB、ElasticJob,支持Cron定時、一次性任務、任務編排、分布式執行批量任務等功能,具備高可用、可視化、可運維、低延時等能力。如下圖所示;
在這里插入圖片描述

常見分布式調度框架:quartz

整體架構圖如下:

在這里插入圖片描述

常見的分布式調度框架:LTS

使用容器化的技術,定時啟動執行器執行任務。

我們使用圖表方式對以上幾個框架做個總結

在這里插入圖片描述

一般情況下中小型的業務的首選就是xxl-job。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/65654.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/65654.shtml
英文地址,請注明出處:http://en.pswp.cn/web/65654.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

網絡安全 | 網絡安全法規:GDPR、CCPA與中國網絡安全法

網絡安全 | 網絡安全法規:GDPR、CCPA與中國網絡安全法 一、前言二、歐盟《通用數據保護條例》(GDPR)2.1 背景2.2 主要內容2.3 特點2.4 實施效果與影響 三、美國《加利福尼亞州消費者隱私法案》(CCPA)3.1 背景3.2 主要內…

Elixir語言的計算機基礎

Elixir語言的計算機基礎 引言 在當今這個快速發展的技術時代,編程語言層出不窮。Elixir作為一種較新的編程語言,以其高并發、低延遲和強大的容錯能力受到越來越多開發者的青睞。它基于Erlang虛擬機(BEAM),自然繼承了…

mysql的mvcc理解

人閱讀 一、說到mvcc就少不了事務隔離級別(大白話解釋) 序列化(SERIALIZABLE):事務之間完全隔離,當成一個序列,一個一個執行。 1 可重復讀(REPEATABLE READ)&#xff…

“AI智能陪練培訓服務系統,讓學習更輕松、更高效

大家好,我是資深產品經理小李,今天咱們來侃侃一個新興的教育輔助工具——AI智能陪練培訓服務系統。這個系統可謂是教育培訓行業的一股新勢力,它究竟有什么神奇之處呢?下面我就跟大家伙兒好好聊聊。 一、什么是AI智能陪練培訓服務系…

notebook主目錄及pip鏡像源修改

目錄 一、notebook主目錄修改二、pip鏡像源修改 一、notebook主目錄修改 在使用Jupyter Notebook進行數據分析時,生成的.ipynb文件默認會保存在Jupyter的主目錄中。通常情況下,系統會將Jupyter的主目錄設置為系統的文檔目錄,而文檔目錄通常位…

如何利用百煉智能體編排應用輕松搭建智能AI旅游助手?

各位小伙伴兒,好哈! 在上一篇文章《5分鐘基于阿里云百煉平臺搭建專屬智能AI機器人》中我們體驗了如何利用阿里云百煉平臺的智能體應用搭建專屬智能機器人。 它的配置過程相對簡單,其“對話式”的輸出形式也十分直觀,非常適合初學…

.NET中的框架和運行環境

在.NET生態系統中,框架和運行環境是兩個不同的概念,它們各自扮演著重要的角色。 下面我將分別介紹.NET中的框架和運行環境,并解釋它們之間的區別。 .NET 框架(Frameworks) 框架提供了一套預定義的類庫、工具和服務&…

js實現一個可以自動重鏈的websocket客戶端

class WebSocketClient {constructor(url, callback, options {}) {this.url url; // WebSocket 服務器地址this.options options; // 配置選項(例如重試間隔、最大重試次數等)this.retryInterval options.retryInterval || 1000; // 重試間隔&#…

計算機視覺目標檢測-DETR網絡

目錄 摘要abstractDETR目標檢測網絡詳解二分圖匹配和損失函數 DETR總結總結 摘要 DETR(DEtection TRansformer)是由Facebook AI提出的一種基于Transformer架構的端到端目標檢測方法。它通過將目標檢測建模為集合預測問題,摒棄了錨框設計和非…

【Vim Masterclass 筆記09】S06L22:Vim 核心操作訓練之 —— 文本的搜索、查找與替換操作(第一部分)

文章目錄 S06L22 Search, Find, and Replace - Part One1 從光標位置起,正向定位到當前行的首個字符 b2 從光標位置起,反向查找某個字符3 重復上一次字符查找操作4 定位到目標字符的前一個字符5 單字符查找與 Vim 命令的組合6 跨行查找某字符串7 Vim 的增…

Python3 JSON

JSON(JavaScript Object Notation)是一種輕量級的數據交換格式,易于人閱讀和編寫,同時也易于機器解析和生成。它基于JavaScript編程語言的一個子集,但JSON是獨立于語言的,很多編程語言都支持JSON格式數據的…

202406 青少年軟件編程等級考試C/C++ 二級真題答案及解析(電子學會)

第 1 題 冠軍魔術 2018年FISM(世界魔術大會)近景總冠軍簡綸廷的表演中有一個情節:以桌面上一根帶子為界,當他將紙牌從帶子的一邊推到另一邊時,紙牌會變成硬幣;把硬幣推回另一邊會變成紙牌。 這里我們假設紙牌會變成等量的硬幣,而硬幣變成紙牌時,紙牌的數量會加倍。那么…

springboot 默認的 mysql 驅動版本

本案例以 springboot 3.1.12 版本為例 <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.1.12</version><relativePath/> </parent> 點擊 spring-…

計算機網絡(二)——物理層和數據鏈路層

一、物理層 1.作用 實現相信計算機節點之間比特流的透明傳輸&#xff0c;盡可能屏蔽具體傳輸介質和物理設備的差異。 2.數據傳輸單位 比特。 3.相關通信概念 ①信源和信宿&#xff1a;即信號的發送方和接收方。 ②數據&#xff1a;即信息的實體&#xff0c;比如圖像、視頻等&am…

sql server cdc漏掃數據

SQL Server的CDC指的是“變更數據捕獲”&#xff08;Change Data Capture&#xff09;。這是SQL Server數據庫提供的一項功能&#xff0c;能夠跟蹤并記錄對數據庫表中數據所做的更改。這些更改包括插入、更新和刪除操作。CDC可以捕獲這些變更的詳細信息&#xff0c;并使這些信息…

AI數字人+文旅:打造數字文旅新名片

在數字化浪潮的推動下&#xff0c;人工智能技術正以前所未有的速度滲透到我們生活的每一個角落。特別是在文化和旅游領域&#xff0c;AI數字人的出現&#xff0c;不僅為傳統文旅產業注入了新的活力&#xff0c;也為游客帶來了全新的體驗。 肇慶AI數字人——星湖 “星湖”是肇…

做一個 簡單的Django 《股票自選助手》顯示 用akshare 庫(A股數據獲取)

圖&#xff1a; 股票自選助手 這是一個基于 Django 開發的 A 股自選股票信息查看系統。系統使用 akshare 庫獲取實時股票數據&#xff0c;支持添加、刪除和更新股票信息。 功能特點 支持添加自選股票實時顯示股票價格和漲跌幅一鍵更新所有股票數據支持刪除不需要的股票使用中…

Protobuf編碼規則詳解

Protobuf編碼規則詳解 1 Message 結構1.1 tag1.1.1 字段編號(field_num)1.1.2 傳輸類型(wire_type) 1.2 字段順序1.3 默認值 2 編碼2.1 Varint編碼2.1.1 Varint編碼過程2.1.2解碼過程2.1.3 存儲2.1.4 小結2.2 有符號整數(sint32和sint64)編碼的問題與zigzag優化 3 編碼實踐3.1測…

系統思考與因果智慧

“眾生畏果&#xff0c;菩薩畏因”&#xff0c;這句話蘊藏著深厚的因果智慧&#xff0c;與系統思考不謀而合。 眾生畏果&#xff0c;體現了大多數人的行為模式&#xff1a;關注的是眼前的問題與結果&#xff0c;比如失敗、沖突、痛苦。正如在系統思考中&#xff0c;我們稱之為…

【docker】exec /entrypoint.sh: no such file or directory

dockerfile生成的image 報錯內容&#xff1a; exec /entrypoint.sh: no such file or directory查看文件正常在此路徑&#xff0c;但是就是報錯沒找到。 可能是因為sh文件的換行符使用了win的。