回覆列表
  • 1 # 陽光魯寧

    一、問題分析

    對於單機的任務排程,使用Quartz十分方便。但是在分散式情況下,對於叢集中每臺機器都會執行任務,從而造成了重複執行任務的問題。

    二、解決思路

    Quart不僅支援單機任務排程,同時也支援叢集中的任務排程。原理如下:

    在叢集中,各個不同的機器公用同一個排程器,排程器按照一定的演算法選擇叢集中某一臺機器執行任務。

    優點:

    1、避免了每臺機器都進行任務排程

    2、避免了所有任務在單機執行造成效能下降

    三、解決方案

    要啟用quartz的分散式任務排程處理,只需如下兩個步驟,同時程式無需修改:

    (1)在資料庫中建立quartz需要的表。這些表由quartz自己維護,用於儲存資料和維護程式執行狀態,這些表對於程式設計師而言是透明的,不需要關注,只需建立好表即可。

    (2)在工程的src下增加quartz.properties配置檔案,進行叢集相關操作的配置。

    配置檔案如下:

    #Configure Main Scheduler Properties

    #==============================================================

    #配置叢集時,quartz排程器的id,由於配置叢集時,只有一個排程器,必須保證每個伺服器該值都相同,可以不用修改,只要每個ams都一樣就行

    org.quartz.scheduler.instanceName = Scheduler1

    #叢集中每臺伺服器自己的id,AUTO表示自動生成,無需修改

    org.quartz.scheduler.instanceId = AUTO

    #==============================================================

    #Configure ThreadPool

    #==============

  • 中秋節和大豐收的關聯?
  • 歷史上有哪些吃醋的女人?