掃二維碼與項目經理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流
隨著互聯網技術的快速發(fā)展,越來越多的企業(yè)需要面對海量的數據處理和管理,而數據庫是其中至關重要的一環(huán)。然而,在面對數以千計的服務器和數以萬計的數據庫表時,如何保證數據的高效穩(wěn)定、以及管理的便利性已成為了一項極具挑戰(zhàn)性的任務。而Elastic Job正是為解決這個難題而設計的分布式數據庫管理工具,它不僅實現了數據自動分片和負載均衡,還提供了一系列強大的管理功能。

梧州網站建設公司成都創(chuàng)新互聯,梧州網站設計制作,有大型網站制作公司豐富經驗。已為梧州上1000+提供企業(yè)網站建設服務。企業(yè)網站搭建\成都外貿網站建設要多少錢,請找那個售后服務好的梧州做網站的公司定做!
什么是Elastic Job
Elastic Job是當今主流的分布式數據庫管理工具之一,它是由阿里巴巴公司開發(fā)的一套開源項目,旨在為Java程序員提供面向大規(guī)模數據處理的可靠、高效、易用的解決方案。Elastic Job的核心功能是實現數據自動分片、負載均衡,以及高可用性的分布式調度管理。
Elastic Job的特點
分布式處理
Elastic Job采用分布式處理模式,可以將數據分散存儲在多臺服務器中,同時實現數據自動分片和調度管理。它不僅提高了數據處理的效率和穩(wěn)定性,還大大減輕了服務器的負擔。
自動化管理
Elastic Job擁有一套高效的自動化管理系統(tǒng),可以實現數據的實時監(jiān)控、異常處理、備份和恢復等工作。并可根據業(yè)務需求進行定制化配置,使得數據管理更加靈活方便。
易用性
Elastic Job的開發(fā)者十分注重易用性,它提供了豐富的API和開發(fā)文檔,讓開發(fā)者可以很輕松地集成該工具到項目中。除此之外,Elastic Job的界面也十分直觀明了,可以方便地進行配置和管理。
強大的擴展性
Elastic Job是非常靈活的工具,支持多種數據源,如關系型數據庫、NoSQL數據庫、MQ、Elasticsearch等。同時,對于一些特定的場景,也可以自定義插件來擴展它的功能。
Elastic Job的應用場景
在實際的應用中,Elastic Job常常被用于以下場景:
1. 高性能數據查詢
由于Elastic Job支持分布式存儲和自動化調度,因此可以實現較高的并發(fā)性能。這使得它在處理大量數據查詢、數據分析等場景下非常有優(yōu)勢。
2. 實時數據處理
隨著互聯網應用的日益廣泛,很多業(yè)務場景需要能夠處理大數據流,比如實時日志分析、實時監(jiān)控等。Elastic Job正是一款能夠滿足這些需求的高效工具。
3. 數據庫備份與恢復
對于大規(guī)模的數據存儲來說,備份和恢復是必不可少的工作,也是保證數據安全性的重要途徑。Elastic Job提供了數據自動備份和高效恢復功能,可以為企業(yè)節(jié)省大量的手動操作。
在當今數字化時代,數據已經成為企業(yè)經營的生命,而Elastic Job可以為企業(yè)在大規(guī)模數據管理方面提供有效的解決方案。通過分布式數據處理、自動化管理、易用性和擴展性等優(yōu)勢,Elastic Job助力企業(yè)實現數據高效穩(wěn)定、便利管理,讓企業(yè)更好地進行數據驅動業(yè)務創(chuàng)新。
相關問題拓展閱讀:
分布式任務調度框架幾乎是每個大型應用必備的工具,本文介紹了任務調度框架使用的需求背景和痛點,對業(yè)界普遍使用的開源分布式任務調度框架的使用進行了探究實踐,并分析了這幾種框架的優(yōu)劣勢和對自身業(yè)務的思考。
一、業(yè)務背景桐租
1.1 為什么需要使用定時任務調度
(1)時間驅動處理場景:
整點發(fā)送優(yōu)惠券,每天更新收益,每天刷新標簽數據和人群數據。
(2)批量處理數據:
按月批量統(tǒng)計報表數據,批量更新短信狀態(tài),實時性要求不高。
(3)異步執(zhí)行解耦:
活動狀態(tài)刷新,異步執(zhí)行離線查詢,與內部邏輯解耦。
1.2 使用需求和痛點
(1)任務執(zhí)行監(jiān)控告警能力。
(2)任務可靈活動態(tài)配置,無需重啟。
(3)業(yè)務透明,低耦合,配置精簡,開發(fā)方便。
(4)易測試。
(5)高可用,無單點故障。
(6)任務不可重復執(zhí)行,防止邏輯異常。
(7)大任務的分發(fā)并行處理能力。
二、開源框架實踐與 探索
2.1 Java 原生 Timer 和
ScheduledExecutorService
2.1.1 Timer使用
Timer缺陷:
由于上述缺陷,盡量不要使用Timer, idea中也會明確提示,使用ScheduledThreadPoolExecutor替代Timer 。
2.1.2 ScheduledExecutorService使用
ScheduledExecutorService對于Timer的缺陷進行了修補,首先ScheduledExecutorService內部實現是ScheduledThreadPool線程池,可以支持多個任務并發(fā)執(zhí)行。
對于某一個線程執(zhí)行的任務出現異常,也會處理,不會影響其他線程任務的執(zhí)行,另外ScheduledExecutorService是基于時間間隔的延遲,執(zhí)行不會由于系統(tǒng)時間的改變發(fā)生變化。
當然,ScheduledExecutorService也有自己的局限性局塵兆:只能根據任務的延遲來進行調度,無法滿足基于絕對時間和日歷調度的需求。
2.2 Spring Task
2.2.1 Spring Task 使用
spring task 是spring自主開發(fā)的輕量級定時任務框架,不需要依賴其他額外的包,配置較為簡單。
此處使用注解配置
2.2.2 Spring Task缺陷
Spring Task 本身不支持持久化,也沒有推出官方的分布式集群模式,只能靠開發(fā)者在業(yè)務應用中自己手動擴展實現,無法滿足可視化,易配置的需求。
2.3 永遠經典的 Quartz
2.3.1 基本介紹
Quartz框架是Java領域最著名的開源任務調度工具,也是目前事實上的定時任務標準,幾乎全部的開源定時任務框架都是基于Quartz核心調度構建而成。
2.3.2 原理解析
核心組件和架構
關鍵概念
(1)
Scheduler
:任務兄沖調度器,是執(zhí)行任務調度的控制器。本質上是一個計劃調度容器,注冊了全部Trigger和對應的JobDetail, 使用線程池作為任務運行的基礎組件,提高任務執(zhí)行效率。
(2)
Trigger
:觸發(fā)器,用于定義任務調度的時間規(guī)則,告訴任務調度器什么時候觸發(fā)任務,其中CronTrigger是基于cron表達式構建的功能強大的觸發(fā)器。
(3)
Calendar
:日歷特定時間點的。一個trigger可以包含多個Calendar,可用于排除或包含某些時間點。
(4)
JobDetail
:是一個可執(zhí)行的工作,用來描述Job實現類及其它相關的靜態(tài)信息,如Job的名稱、監(jiān)聽器等相關信息。
(5)
Job
:任務執(zhí)行接口,只有一個execute方法,用于執(zhí)行真正的業(yè)務邏輯。
(6)
JobStore
:任務存儲方式,主要有RAMJobStore和JDBCJobStore,RAMJobStore是存儲在JVM的內存中,有丟失和數量受限的風險,JDBCJobStore是將任務信息持久化到數據庫中,支持集群。
2.3.3 實踐說明
(1)關于Quartz的基本使用
(2)業(yè)務使用要滿足動態(tài)修改和重啟不丟失, 一般需要使用數據庫進行保存。
(3)組件化
(4)擴展
2.3.4 缺陷和不足
(1)需要把任務信息持久化到業(yè)務數據表,和業(yè)務有耦合。
(2)調度邏輯和執(zhí)行邏輯并存于同一個項目中,在機器性能固定的情況下,業(yè)務和調度之間不可避免地會相互影響。
(3)quartz集群模式下,是通過數據庫獨占鎖來唯一獲取任務,任務執(zhí)行并沒有實現完善的負載均衡機制。
2.4 輕量級神器 XXL-JOB
2.4.1 基本介紹
XXL-JOB是一個輕量級分布式任務調度平臺,主打特點是平臺化,易部署,開發(fā)迅速、學習簡單、輕量級、易擴展,代碼仍在持續(xù)更新中。
主要提供了任務的動態(tài)配置管理、任務監(jiān)控和統(tǒng)計報表以及調度日志幾大功能模塊,支持多種運行模式和路由策略,可基于對應執(zhí)行器機器集群數量進行簡單分片數據處理。
2.4.2 原理解析
2.1.0版本前核心調度模塊都是基于quartz框架,2.1.0版本開始自研調度組件,移除quartz依賴 ,使用時間輪調度。
2.4.3 實踐說明
詳細配置和介紹參考官方文檔。
2.4.3.1 demo使用:
@JobHandler(value=”offlineTaskJobHandler”) ,實現業(yè)務邏輯即可。(注:此次引入了dubbo,后文介紹)。
(滑動可查看)
示例2:分片廣播任務。
(滑動可查看)
2.4.3.2 整合dubbo
(1)引入dubbo-spring-boot-starter和業(yè)務facade jar包依賴。
(滑動可查看)
(2)配置文件加入dubbo消費端配置(可根據環(huán)境定義多個配置文件,通過profile切換)。
(滑動可查看)
(3)代碼中通過@Reference注入facade接口即可。
(滑動可查看)
(4)啟動程序加入@EnableDubboConfiguration注解。
(滑動可查看)
2.4.4 任務可視化配置
內置了平臺項目,方便了開發(fā)者對任務的管理和執(zhí)行日志的監(jiān)控,并提供了一些便于測試的功能。
2.4.5 擴展
(1)任務監(jiān)控和報表的優(yōu)化。
(2)任務報警方式的擴展,比如加入告警中心,提供內部消息,短信告警。
(3)對實際業(yè)務內部執(zhí)行出現異常情況下的不同監(jiān)控告警和重試策略。
2.5 高可用 Elastic-Job
2.5.1 基本介紹
Elastic-Job是一個分布式調度解決方案,由兩個相互獨立的子項目Elastic-Job-Lite和Elastic-Job-Cloud組成。
Elastic-Job-Lite定位為輕量級無中心化解決方案,使用jar包的形式提供分布式任務的協(xié)調服務。
Elastic-Job-Cloud使用Mesos + Docker的解決方案,額外提供資源治理、應用分發(fā)以及進程隔離等服務。
可惜的是已經兩年沒有迭代更新記錄。
2.5.2 原理解析
2.5.3 實踐說明
2.5.3.1 demo使用
(1)安裝zookeeper,配置注冊中心config,配置文件加入注冊中心zk的配置。
(滑動可查看)
(滑動可查看)
(2)配置數據源config,并配置文件中加入數據源配置。
(滑動可查看)
(滑動可查看)
(3)配置事件config。
(滑動可查看)
(4)為了便于靈活配置不同的任務觸發(fā)事件,加入ElasticSimpleJob注解。
(滑動可查看)
(5)對配置進行初始化。
(滑動可查看)
(6)實現 SimpleJob接口,按上文中方法整合dubbo, 完成業(yè)務邏輯。
(滑動可查看)
2.6 其余開源框架
(1)
Saturn
:Saturn是唯品會開源的一個分布式任務調度平臺,在Elastic Job的基礎上進行了改造。
(2)
SIA-TASK
:是宜信開源的分布式任務調度平臺。
三、優(yōu)劣勢對比和業(yè)務場景適配思考
業(yè)務思考:
四、結語
對于并發(fā)場景不是特別高的系統(tǒng)來說,xxl-job配置部署簡單易用,不需要引入多余的組件,同時提供了可視化的控制臺,使用起來非常友好,是一個比較好的選擇。希望直接利用開源分布式框架能力的系統(tǒng),建議根據自身的情況來進行合適的選型。
附:參考文獻
高可用架構
改變互聯網的構建方式
elastic job 數據庫的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于elastic job 數據庫,Elastic Job:大規(guī)模數據庫管理的利器,分布式定時任務調度框架實踐的信息別忘了在本站進行查找喔。
成都創(chuàng)新互聯科技有限公司,是一家專注于互聯網、IDC服務、應用軟件開發(fā)、網站建設推廣的公司,為客戶提供互聯網基礎服務!
創(chuàng)新互聯(www.cdcxhl.com)提供簡單好用,價格厚道的香港/美國云服務器和獨立服務器。創(chuàng)新互聯——四川成都IDC機房服務器托管/機柜租用。為您精選優(yōu)質idc數據中心機房租用、服務器托管、機柜租賃、大帶寬租用,高電服務器托管,算力服務器租用,可選線路電信、移動、聯通機房等。

我們在微信上24小時期待你的聲音
解答本文疑問/技術咨詢/運營咨詢/技術建議/互聯網交流