您好,登錄后才能下訂單哦!
本篇內容介紹了“分析分布式定時任務elastic-job”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
在實際開發種常會遇到需要定時跑批,定時每天執行一次對賬操作等場景。通常采用定時任務如spring定時框架、ScheduledExecutorService等。但這些都只適于單機,當在多節的情況下會出現定時任務重復執行問題,這時候需要采用分布式定時任務來解決。分布式定時任務不僅解決了以上難題,還提供了分片處理提高處理效率、分布式調度協調、彈性擴容縮容、失效轉移等優點。
一、常見分布式定時任務有哪些?
當前有很多開源的分布式定時任務,以下列出幾種常用的如:
elastic-job:當當開發的彈性分布式任務調度系統,功能豐富強大,采用zookeeper實現分布式協調,實現任務高可用以及分片,并且可以支持云開發。
xxl-job: 是大眾點評員工徐雪里于2015年發布的分布式任務調度平臺,是一個輕量級分布式任務調度框架,其核心設計目標是開發迅速、學習簡單、輕量級、易擴展。
Saturn:是唯品會自主研發的分布式的定時任務的調度平臺,基于當當的elastic-job 版本1開發,并且可以很好的部署到docker容器上。
其中應用得較多的為elastic-job(E-job)與xxl-job (X-job),關于兩者的技術選型這里不做更多具體的討論,下面提供兩者的綜合對比用于參考,可結合實際業務技術場景進行選型
二、elastic-job作業分片策略有哪些?
結合實際場景,選擇合適的作業分片策略,進行分片處理可以提高任務的執行效率。以下是elastic-job提供的分片策略
AverageAllocationJobShardingStrategy分片策略
OdevitySortByNameJobShardingStrategy分片策略
RotateServerByNameJobShardingStrategy分片策略
自定義分片策略
1. AverageAllocationJobShardingStrategy分片策略
com.dangdang.ddframe.job.lite.api.strategy.impl.AverageAllocationJobShardingStrategy
策略說明:
基于平均分配算法的分片策略,也是默認的分片策略,作業數能被服務器數整除情況下均勻分配、
如果分片不能整除,則不能整除的多余分片將依次追加到序號小(ip地址靠前)的服務器。
缺點:平均分片策略,當分片數小于作業服務器數時,作業會被永遠分配在ip地址靠前的服務器,而導致IP地址靠后的服務器空閑。
2. OdevitySortByNameJobShardingStrategy分片策略
com.dangdang.ddframe.job.lite.api.strategy.impl.OdevitySortByNameJobShardingStrategy
策略說明:
該策略核心思想為根據作業名的哈希值奇偶數決定采用IP升/降序算法實現分片,作業名的哈希值為奇數則IP升序,作業名的哈希值為偶數則IP降序,通過這種方式用于將不同的作業分片負載均衡至不同的服務器。
如作業名哈希值為偶數,則采用IP降序算法實現分片,這樣就避免了采用平均分配算法時IP地址靠后的服務器空閑的問題。
其內部采用了平均算法。
3. RotateServerByNameJobShardingStrategy分片策略
com.dangdang.ddframe.job.lite.api.strategy.impl.RotateServerByNameJobShardingStrategy
策略說明:
根據作業名的哈希值對服務器列表進行輪轉的分片策略,其內部也是采用平均分片算。,
4. 自定義分片策略
可通過實現JobShardingStrategy接口并實現sharding方法,可根據需求定制化自己的分片策略,以下是Spring中切換自定義分配策略的配置方式。
“分析分布式定時任務elastic-job”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。