1. 程式人生 > >Elastic-Job何為分散式作業

Elastic-Job何為分散式作業

原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/distribution/

何為分散式作業?

分片概念

任務的分散式執行,需要將一個任務拆分為n個獨立的任務項,然後由分散式的伺服器分別執行某一個或幾個分片項。

例如:有一個遍歷資料庫某張表的作業,現有2臺伺服器。為了快速的執行作業,那麼每臺伺服器應執行作業的50%。 為滿足此需求,可將作業分成2片,每臺伺服器執行1片。作業遍歷資料的邏輯應為:伺服器A遍歷ID以奇數結尾的資料;伺服器B遍歷ID以偶數結尾的資料。 如果分成10片,則作業遍歷資料的邏輯應為:每片分到的分片項應為ID%10,而伺服器A被分配到分片項0,1,2,3,4

;伺服器B被分配到分片項5,6,7,8,9,直接的結果就是伺服器A遍歷ID0-4結尾的資料;伺服器B遍歷ID5-9結尾的資料。

分片項與業務處理解耦

Elastic-job並不直接提供資料處理的功能,框架只會將分片項分配至各個執行中的作業伺服器,開發者需要自行處理分片項與真實資料的對應關係。

分散式作業的執行

Elastic-job並無作業排程中心節點,而是基於部署作業框架的程式在到達相應時間點時各自觸發排程。

註冊中心僅用於作業註冊和監控資訊儲存。而主作業節點僅用於處理分片和清理等功能。

個性化引數的適用場景

個性化引數即shardingItemParameters,可以和分片項匹配對應關係,用於將分片項的數字轉換為更加可讀的業務程式碼。

例如:按照地區水平拆分資料庫,資料庫A是北京的資料;資料庫B是上海的資料;資料庫C是廣州的資料。 如果僅按照分片項配置,開發者需要了解0表示北京;1表示上海;2表示廣州。 合理使用個性化引數可以讓程式碼更可讀,如果配置為0=北京,1=上海,2=廣州,那麼程式碼中直接使用北京,上海,廣州的列舉值即可完成分片項和業務邏輯的對應關係。

作業高可用

Elastic-job提供最安全的方式執行作業。將分片項設定為1,並使用多於1臺的伺服器執行作業,作業將會以1n從的方式執行。

一旦執行作業的伺服器崩潰,等待執行的伺服器將會在下次作業啟動時替補執行。 開啟失效轉移功能效果更好,可以保證在本次作業執行時崩潰,備機立即啟動替補執行。

最大限度利用資源

Elastic-job也提供最靈活的方式,最大限度的提高執行作業的吞吐量。將分片項設定為大於伺服器的數量,最好是大於伺服器倍數的數量,作業將會合理的利用分散式資源,動態的分配分片項。

例如:3臺伺服器,分成10片,則分片項分配結果為伺服器A=0,1,2;伺服器B=3,4,5;伺服器C=6,7,8,9。 如果伺服器C崩潰,則分片項分配結果為伺服器A=0,1,2,3,4;伺服器B=5,6,7,8,9。在不丟失分片項的情況下,最大限度的利用現有資源提高吞吐量。


==============================================================================================================

相關推薦

Elastic-Job分散式作業

原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/distribution/ 何為分散式作業? 分片概念 任務的分散式執行,需要將一個任務拆分為n個獨立的任務項,然後由分散式的伺服器分別執行某一個或

3分鐘讀懂分散式、微服務和叢集!

微服務是一種架構,也是在分散式範疇之內的。多微才叫微?在分散式系統中,微服務更加強調單一職責、輕量級通訊(HTTP)、獨立性並且程序隔離。好了,沒什麼好說的了,實踐出真知,建議大家多多瞭解 Spring-Cloud相關微服務元件。 一、分散式 小馬正在經營一個線上購物網站,名叫TT貓,有商品

趣文:3分鐘讀懂分散式、微服務和叢集!

作者介紹 張志朋,資深Java愛好者,深耕於線上教育領域,個人部落格: https://blog.52itstyle.com。 一、分散式 小馬正在經營一個線上購物網站,名叫TT貓,有商品管理、訂單管理、使用者管理、支付管理、購物車等模組,每個模組部署到獨立的雲服務主機。 現在,程式設計師小明同學

elastic-job之Dataflow型別作業實現

一、前序二、Dataflow是什麼?Dataflow型別用於處理資料流,需實現DataflowJob介面。該介面提供2個方法可供覆蓋,分別用於抓取(fetchData)和處理(processData)資料。三、 怎麼開啟?可通過DataflowJobConfiguration

elastic-job之Simple型別作業實現

1.什麼是Simple型別作業?Simple型別作業意為簡單實現,未經任何封裝的型別。需實現SimpleJob介面。該介面僅提供單一方法用於覆蓋,此方法將定時執行。與Quartz原生介面相似,但提供了彈性擴縮容和分片等功能。2. 建立Simple型別專案,通過API啟動方式呼

elastic-job+zookeeper實現分散式定時任務排程的使用(springboot版本)

總體思路,要確認一個定時任務需要一個cron表示式+jobDetail; 現在要讓實現定時任務的協調,則就讓zookeeper,簡單說就是需要3要素,zk物件+cron+jobDetail; 總的專案結構 1、maven引入依賴 <depende

Elastic-Job-Lite 原始碼閱讀 ---- 作業執行

作業執行的核心流程:  因為使用了 Quartz,任務執行是實現了 Quartz 的 Job 介面:  public final class LiteJob implements Job { @Setter private ElasticJob elasticJob

詳解當當網的分散式作業框架elastic-job

轉自:http://www.infoq.com/cn/articles/dangdang-distributed-work-framework-elastic-job 作業的必要性以及存在的問題 為什麼需要作業? 作業即定時任務。一般來說,系統可使用訊息傳遞代替部分使用作業的場

Elastic-job實戰(分散式作業排程框架)

就拿一個場景來說吧,如果我們的專案是部署到多臺機器上,那麼某一時刻,我們的定時任務肯定每臺機器上都會執行一遍,那這肯定不是我們想要的結果,我們只希望有一臺機器能執行。 一.前言 Elastic job是噹噹網架構師基於Zookepper、Quartz開發並開源的

elastic-job分散式作業排程框架簡介

1.elastic-job是什麼?elastic-job是噹噹內部應用框架ddframe中dd-job的作業模組中分離出來的分散式彈性作業框架。2. 什麼是作業排程(定時任務)?作業即定時任務。一般來說,系統可使用訊息傳遞代替部分使用作業的場景。兩者確有相似之處。可互相替換的

【實戰Elastic-Job】--詳解當當網分散式作業框架

         在做電商專案的時候,有很多地方需要作業來完成,通過對比在scheduler的地方用了當當網的分散式作業框架Elastic-Job而沒有選擇spring自帶的scheduler, el

Elastic-Job-Lite 源碼分析 —— 作業分片策略

哈希 AD hash alloc hub strings put iat 總數 摘要: 原創出處 http://www.iocoder.cn/Elastic-Job/job-sharding-strategy/ 「芋道源碼」歡迎轉載,保留摘要,謝謝! 本文基於 Elast

Elastic-Job-分散式排程解決方案

Elastic-Job是一個分散式排程解決方案,由兩個相互獨立的子專案Elastic-Job-Lite和Elastic-Job-Cloud組成。 Elastic-Job-Lite定位為輕量級無中心化解決方案,使用jar包的形式提供分散式任務的協調服務。   官方

Elastic Job 入門教程(二)— Spring Boot框架下是實現Elastic Job 指令碼作業(Script Job

在Elastic Job 入門教程(一)— 與Spring Boot整合這篇文章中,我們簡單介紹了Spring Boot與Elastic Job 的整合,並簡單實現了SimpleJob型別作業。本章,我

elastic-job--作業型別

elastic-job提供了三種類型的作業: Simple型別作業 SimpleJob需要實現SimpleJob介面,意為簡單實現,未經過任何封裝,與quartz原生介面相似,比如示例程式碼中所使用的job。 Dataflow型別作業 Dataflow型別用於

分散式任務框架--Elastic-job

一、簡介 Elastic-job是一個分散式排程解決方案,由2個相互獨立的子專案Elastic-job-Lite和Elastic-Job-cloud組成; Elastic-Job-Lite定位為輕量級無中心化解決方案,使用jar包的形式提供分散式任務的協調服務;

elastic-job分散式job 1\zookeeper的四種類型的節點

1\zookeeper的四種類型的節點 znode建立型別(CreateMode),有以下四種: PERSISTENT 持久化節點 PERSISTENT_SEQUENTIAL 順序自動編號持久化節點,這種節點會根據當前已存在的節

分散式定時任務排程平臺Elastic-Job技術詳解

        在我們的專案當中,使用定時任務是避免不了的,我們在部署定時任務時,通常只部署一臺機器。部署多臺機器時,同一個任務會執行多次。比如給使用者傳送郵件定時任務,每天定時的給使用者下發郵件。如果部署了多臺,同一個使用者將傳送多份郵件。只部署一臺機器,可用性又無法保證。

Elastic-Job是否支援動態新增做作業

原文地址:http://dangdangdotcom.github.io/elastic-job/post/faq/ 6. 是否支援動態新增作業? 回答: 動態新增作業這個概念每個人理解不盡相同。 elast

Elastic-Job作業執行狀態監聽

原文地址:http://dangdangdotcom.github.io/elastic-job/post/1.x/execution_monitor/ 作業執行狀態監控 通過監聽elastic-job的zookeeper註冊中心的幾個關鍵節點即可完成作業執行狀態監控