精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Spring Boot集群/分布式下的定時任務說明

jf_78858299 ? 來源:SpringBoot ? 作者:林祥纖 ? 2023-04-12 11:31 ? 次閱讀

如有8個實例,執行的時候會隨機分配一個實例運行還是8個都會運行?在這節博客中沒有辦法完全解決這個問題,在這里拋磚引玉說明下。 看下本章大綱:

(1)回顧定時任務的實現方式;

(2)集群環境下的任務調度說明;

(3)Spring的Scheduled Task實現集群思路;

(4)Quartz實現集群思路;

我們一起看下本節具體的內容:

(1)回顧定時任務的實現方式;

定時任務的實現方式有多種,例如

JDK自帶的Timer+TimerTask方式,

spring3.0以后的調度任務(ScheduledTask),

Quartz等。

(2)集群環境下的任務調度說明;

Timer+TimerTask是最基本的解決方案;

Spring自帶的Scheduled Task是一個輕量級的定時任務調度器,支持固定時間(支持cron表達式)和固定時間間隔調度任務,支持線程池管理

以上兩種方式有一個共同的缺點,那就是應用服務器集群下會出現任務多次被調度執行的情況,因為集群的節點之間是不會共享任務信息的,每個節點上的任務都會按時執行。

Quartz是一個功能完善的任務調度框架,特別牛叉的是它支持集群環境下的任務調度,當然代價也很大,需要將任務調度狀態序列化到數據庫。Quartz框架需要10多張表協同,配置繁多。

(3)Spring的Scheduled Task實現集群思路;

如果在實際項目中使用的scheduled task的話,那么也有自己變通的方式進行實現。

無非是一個任務互斥訪問的問題,聲明一把全局的“鎖”作為互斥量,哪個應用服務器拿到這把“鎖”,就有執行任務的權利,未拿到“鎖”的應用服務器不進行任何任務相關的操作。另外就是這把“鎖”最好還能在下次任務執行時間點前失效。

(4)Quartz實現集群思路;

選Quartz的團隊基本上是沖著Quartz本身實現的集群去的, 不然JDK自帶Timer就可以實現相同的功能, 而Timer存在的單點故障是生產環境上所不能容忍的。 在自己造個有負載均衡和支持集群(高可用、伸縮性)的調度框架又影響項目的進度, 所以大多數團隊都直接使用了Quartz來作為調度框架

一個Quartz集群中的每個節點是一個獨立的Quartz應用,它又管理著其他的節點。這就意味著你必須對每個節點分別啟動或停止。Quartz集群中,獨立的Quartz節點并不與另一其的節點或是管理節點通信,而是通過相同的數據庫表來感知到另一Quartz應用的

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • spring
    +關注

    關注

    0

    文章

    338

    瀏覽量

    14311
  • Boot
    +關注

    關注

    0

    文章

    149

    瀏覽量

    35784
收藏 人收藏

    評論

    相關推薦

    spark集群使用hanlp進行分布式分詞操作說明

    本篇分享一個使用hanlp分詞的操作小案例,即在spark集群中使用hanlp完成分布式分詞的操作,文章整理自【qq_33872191】的博客,感謝分享!以下為全文: 分兩步:第一步:實現
    發表于 01-21 10:45

    如何在集群部署時實現分布式session?

    集群部署時的分布式 session 如何實現?
    發表于 07-17 06:57

    Hadoop集群分布式的搭建步驟

    Hadoop集群分布式搭建
    發表于 11-04 09:19

    【學習打卡】OpenHarmony的分布式任務調度

    之前我們分享過分布式軟總線和分布式數據管理,今天主要說一OpenHarmony的分布式任務調度,分布式
    發表于 07-18 17:06

    Spring Boot定時任務的重寫方法

    Spring Boot應該是目前最火的java開源框架了,它簡化了我們創建一個web服務的過程,讓我們可以在很短時間、基本零配置就可以啟動一個web服務。
    的頭像 發表于 01-20 17:38 ?2411次閱讀

    SpringBoot如何實現動態增刪啟停定時任務

    spring boot項目中,可以通過 @EnableScheduling 注解和@Scheduled注解實現定時任務,也可以通過SchedulingConfigurer接口來實現定時任務
    的頭像 發表于 09-24 09:49 ?2917次閱讀
    SpringBoot如何實現動態增刪啟停<b class='flag-5'>定時任務</b>

    Python定時任務的實現方式

    在日常工作中,我們常常會用到需要周期性執行的任務,一種方式是采用 Linux 系統自帶的 crond 結合命令行實現。另外一種方式是直接使用Python。接下來整理的是常見的Python定時任務
    的頭像 發表于 10-08 15:20 ?5704次閱讀

    說說Spring定時任務如何大規模企業級運用

    定時任務是業務應用開發中非常普遍存在的場景(如:每分鐘掃描超時支付的訂單,每小時清理一次數據庫歷史數據,每天統計前一天的數據并生成報表等等),解決方案很多,Spring 框架提供了一種通過注解來配置定時任務的解決方案,接入非常的
    的頭像 發表于 11-04 09:36 ?672次閱讀

    xxl-job任務調度中間件解決定時任務的調度問題

    xxl-job是一款非常優秀的任務調度中間件,輕量級、使用簡單、支持分布式等優點,讓它廣泛應用在我們的項目中,解決了不少定時任務的調度問題。
    的頭像 發表于 01-31 09:53 ?1836次閱讀

    Spring Boot中整合兩種定時任務的方法

    框架 Quartz ,Spring Boot 源自 Spring+SpringMVC ,因此天然具備這兩個 Spring 中的定時任務實現策
    的頭像 發表于 04-07 14:55 ?1514次閱讀
    <b class='flag-5'>Spring</b> <b class='flag-5'>Boot</b>中整合兩種<b class='flag-5'>定時任務</b>的方法

    Spring Boot中如何使用定時任務

    本文介紹在 Spring Boot 中如何使用定時任務,使用非常簡單,就不做過多說明了。
    的頭像 發表于 04-12 10:56 ?949次閱讀

    如何動態添加修改刪除定時任務

    如何動態添加修改刪除定時任務?那么我們一起看看具體怎么實現,先看下本節大綱: (1)思路說明; (2)代碼解析; (3)修改定時任務執行周期特別說明
    的頭像 發表于 04-12 11:06 ?1057次閱讀

    spring分布式框架有哪些

    Spring分布式框架。 Spring Cloud Spring Cloud是基于Spring Boo
    的頭像 發表于 11-16 10:58 ?750次閱讀

    springclould分布式教程

    Spring Cloud是一個基于Spring Boot分布式系統開發工具,它提供了一系列的分布式系統解決方案,可以幫助開發者快速構建和部
    的頭像 發表于 11-16 10:59 ?475次閱讀

    springcloud如何實現分布式

    Spring Cloud是基于Spring Boot開發的一套分布式系統解決方案,它主要包括了多個子項目,如服務注冊與發現、配置中心、負載均衡、斷路器、路由等等。通過使用
    的頭像 發表于 11-16 11:01 ?652次閱讀