国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹

這篇具有很好參考價值的文章主要介紹了支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹

本文將從單機(jī)定時調(diào)度開始,循序漸進(jìn)地帶領(lǐng)大家了解五福定制三層分發(fā)任務(wù)處理框架。

?

一、背景介紹

技術(shù)同學(xué)對定時任務(wù)肯定不陌生。定時任務(wù)一般用來定時批量進(jìn)行業(yè)務(wù)處理。支付寶卡包券到期提醒、刪除過期失效券,五福大促批量給用戶發(fā)放添福紅包等場景,都是通過定時任務(wù)觸發(fā)來完成的。
作者有幸參與了2023兔年五福大促的開發(fā),主導(dǎo)完成了福氣樂園分會場平分5000萬大獎需求。通過學(xué)習(xí)并運(yùn)用五福定制三層分發(fā)任務(wù)處理框架,最終平穩(wěn)絲滑的完成了平分大獎需求任務(wù)。本文將從單機(jī)定時調(diào)度開始,循序漸進(jìn)地帶領(lǐng)大家了解五福定制三層分發(fā)任務(wù)處理框架。

二、定時任務(wù)分類

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹

本文將定時任務(wù)分為單機(jī)和集群兩大類別,其中單機(jī)又分為定時調(diào)度和定時調(diào)度加批處理框架,集群分為三層分發(fā)和五福定制三層分發(fā)任務(wù)處理框架。

2.1、單機(jī)任務(wù)

單機(jī)定時任務(wù)毫無疑問是在單臺機(jī)器上運(yùn)行的定時任務(wù)。在業(yè)務(wù)量級不大,沒有進(jìn)行分庫分表時,往往單機(jī)定時任務(wù)即可滿足業(yè)務(wù)需求。

從復(fù)雜度上來說,單機(jī)定時任務(wù)又可分為簡單的定時調(diào)度和定時調(diào)度+批處理兩種。

1、定時調(diào)度

在Spring中可以通過@Scheduled 來啟用定時任務(wù)。觸發(fā)的方式有兩種,分別是:cron 表達(dá)式和 fixedRated類配置參數(shù)。常用的案例:

// cron表達(dá)式
@Scheduled(cron="0 0/30 9-17 * * ?") //按cron規(guī)則執(zhí)行,朝九晚五工作時間內(nèi)每半小時
@Scheduled(cron="0 0 12 ? * WED") //按cron規(guī)則執(zhí)行,表示每個星期三中午12點(diǎn)

// fixedRated類配置
@Scheduled(fixedRate=5000) //上一次開始執(zhí)行時間點(diǎn)后5秒再次執(zhí)行;
@Scheduled(fixedDelay=3000) //上一次執(zhí)行完畢時間點(diǎn)后3秒再次執(zhí)行;
@Scheduled(initialDelay=1000, fixedDelay=2000) //第一次延遲1秒執(zhí)行,然后在上一次執(zhí)行完畢時間點(diǎn)后2秒再次執(zhí)行;

定時調(diào)度往往用于業(yè)務(wù)處理流程比較簡單的場景,比如定時生成簡單報表,發(fā)送通知。對于復(fù)雜耗時的場景,處理效率不高,業(yè)務(wù)高峰期會積壓大量待處理數(shù)據(jù),影響業(yè)務(wù)。

2、定時調(diào)度+批處理

為了解決復(fù)雜耗時場景下定時調(diào)度效率不高的問題,可以引入批處理框架。定時調(diào)度與批處理框架相結(jié)合,可以大幅提高數(shù)據(jù)處理的效率,提升系統(tǒng)穩(wěn)定性,保障業(yè)務(wù)穩(wěn)定運(yùn)行。

以Spring Batch批處理框架為例,任務(wù)處理流程如下:

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹

Spring Batch批處理框架將任務(wù)拆分成多個Step,同時每個Step里面又分為itemReader,itemProcessor,?itemWriter。通過將任務(wù)分層細(xì)化,能夠讓多個階段并行處理,提高任務(wù)處理效率。批處理框架結(jié)合定時調(diào)度框架,可以在單機(jī)情況下,對大量復(fù)雜的業(yè)務(wù)進(jìn)行高效的批處理。

?

2.2、集群任務(wù)

在分庫分表大業(yè)務(wù)流量情況下,單機(jī)定時任務(wù)已無法滿足業(yè)務(wù)需求了,這時就產(chǎn)生了集群定時任務(wù)。在支付寶技術(shù)架構(gòu)下,用戶數(shù)據(jù)按照eid進(jìn)行分庫分表,同時進(jìn)行Zone維度的隔離。此時單機(jī)定時任務(wù)無法對全量數(shù)據(jù)做處理,于是支付寶便有了自己的分布式任務(wù)調(diào)度中間件Antscheduler,配合三層分發(fā)任務(wù)處理框架,就可以對大量數(shù)據(jù)進(jìn)行定時批量處理。

1、三層分發(fā)

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹
上圖描述了三層分發(fā)實(shí)現(xiàn)定時任務(wù)處理的過程:
1.Antscheduler任務(wù)調(diào)度中間件按照配置好的規(guī)則,定時往消息中心投遞消息。
2.消息中心將定時任務(wù)消息分別投遞到每個Zone中的一臺機(jī)器。
3.接收到消息的機(jī)器進(jìn)入三層分發(fā)的第一層,即Splitor處理流程。通常是獲取當(dāng)前Zone的eid分片,比如00~24。
4.第一層Splitor處理完了之后,通過TR oneway的調(diào)用方式,在當(dāng)前Zone對三層分發(fā)的第二層發(fā)起調(diào)用,即進(jìn)入Loader處理流程。此時調(diào)用得到擴(kuò)散,eid分片為00~24的情況下,會發(fā)起25次TR調(diào)用,即最多會進(jìn)入當(dāng)前Zone的25臺機(jī)器進(jìn)行Loader處理。
5.Loader通常是獲取傳遞過來eid分片的數(shù)據(jù)。比如一臺機(jī)器的Loader接收到eid為20,則該Loader從eid為20分片的DB獲取100條待處理數(shù)據(jù)。
6.第二層Loader獲取到待處理數(shù)據(jù)后,同樣是通過TR oneway的調(diào)用方式,在當(dāng)前Zone對三層分發(fā)的第三層發(fā)起調(diào)用,即進(jìn)入Executor處理流程。此時調(diào)用進(jìn)一步得到擴(kuò)散,一個Loader獲取的100條數(shù)據(jù),此時會發(fā)起100次TR調(diào)用,即最多會進(jìn)入當(dāng)前Zone的100臺機(jī)器進(jìn)行Executor處理。
7.Executor通常是進(jìn)行真正業(yè)務(wù)處理邏輯的地方。比如對每條數(shù)據(jù)做狀態(tài)變更、發(fā)送eid維度消息等等。
三層分發(fā)能很好的將任務(wù)進(jìn)行分層拆分?jǐn)U散,充分利用機(jī)器資源,盡量做到負(fù)載均衡。但三層分發(fā)也存在一些缺陷,主要體現(xiàn)在以下幾個方面:
1.定時調(diào)度間隔和間隔內(nèi)能夠處理的數(shù)據(jù)量很難完全匹配。調(diào)度間隔時間太長,機(jī)器資源沒有得到有效利用,會導(dǎo)致處理效率低下,任務(wù)會積壓;調(diào)度間隔時間太短,有可能會導(dǎo)致數(shù)據(jù)被重復(fù)撈取處理,為此要做額外的防重復(fù)處理邏輯。
2.無法做到平滑的任務(wù)處理。由于在Loader層獲取要處理的任務(wù)數(shù),交由Executor層執(zhí)行時,并不能限制任務(wù)執(zhí)行的qps,同時待處理任務(wù)數(shù)變多時,整個集群任務(wù)的qps就變得很高,對DB和其他外圍系統(tǒng)來說,存在穩(wěn)定性風(fēng)險。
3.無法最大化利用集群機(jī)器資源。考慮到穩(wěn)定性和高可用,設(shè)計(jì)上每個Zone是有A/B分組的,每個分組都能獲取到本Zone的eid分片,所以配置Antscheduler調(diào)度規(guī)則時,通常只會選擇Zone的A/B組中的一組開啟任務(wù)調(diào)度。三層分發(fā)內(nèi)部每個層級之間的TR調(diào)用又只能在本Zone同組內(nèi)進(jìn)行,A/B組之間無法進(jìn)行TR調(diào)用,所以浪費(fèi)了一半的機(jī)器資源。

2、五福定制三層分發(fā)

五福大促有很多業(yè)務(wù)場景都是需要通過定時任務(wù)來進(jìn)行處理的,比如生肖卡提醒、AI年畫提醒,福氣樂園平分5000萬大獎。五福大促對穩(wěn)定性和可用性的要求是非常高的,為了解決三層分發(fā)處理框架缺陷帶來的效率和穩(wěn)定性風(fēng)險,五福在三層分發(fā)基礎(chǔ)上做了定制化改造,改造的目標(biāo)主要有兩點(diǎn):
1)最大化利用集群機(jī)器資源。做到真正的負(fù)載均衡,同時也能夠提升集群的任務(wù)處理容量。
2)平滑的任務(wù)處理。減少任務(wù)調(diào)用的尖刺,避免對DB和外部系統(tǒng)造成穩(wěn)定性風(fēng)險。
下面分別從優(yōu)化目標(biāo)的兩點(diǎn)來進(jìn)行闡述。
1、最大化利用集群機(jī)器資源
由于三層分發(fā)默認(rèn)只會在同一個Zone的A/B組中開啟一組,導(dǎo)致浪費(fèi)了一半的機(jī)器。顯而易見,要最大化利用集群機(jī)器資源,就需要讓A/B組的機(jī)器都能夠參與到任務(wù)處理當(dāng)中。優(yōu)化的步驟如下:
1.Antscheduler定時調(diào)度平臺同時開啟A/B分組調(diào)度。
2.增加任務(wù)配置,配置的目的是讓A組的機(jī)器只處理奇數(shù)位eid、B組的機(jī)器只處理偶數(shù)位eid。
3.Splitor層根據(jù)任務(wù)配置,將本Zone全量eid進(jìn)行分組,A組只處理奇數(shù)位eid,B組只處理偶數(shù)位eid。
上面三步做完以后,就能讓集群所有的機(jī)器都能參與到任務(wù)處理當(dāng)中,從而最大化的利用了機(jī)器資源。

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹

以上圖為例,Zone_01對應(yīng)DB的eid分片為00~24,經(jīng)過Splitor處理之后,Zone_01(A)組機(jī)器獲得任務(wù)處理的eid都是奇數(shù)位,即01、03、...23;同理,Zone_01(B)組機(jī)器獲得任務(wù)處理的eid都是偶數(shù)位,即00、02、...24。后續(xù)Loader、Executor處理都在本組內(nèi)進(jìn)行。通過把eid分片像A/B分組那樣進(jìn)行奇/偶分組,就能讓所有機(jī)器都能夠參與到任務(wù)處理當(dāng)中。下面是eid分組的核心代碼:
/**
* 根據(jù)配置中心的dataFlag過濾
* 1、默認(rèn)ALL不區(qū)分
* 2、ODD 表示僅分發(fā)奇數(shù)表號
* 3、EVEN 標(biāo)識僅分發(fā)偶數(shù)表號
*
* @param eidList
*/
public void filteByDataFlag(List<String> eidList) {
    String dataFlag = SchedulerConfigDrmUtil.getIndexFilterFlag();
    int strategy = -1;
    if (StringUtil.equalsIgnoreCase("ODD", dataFlag)) {
        strategy = 1;
    } else if (StringUtil.equalsIgnoreCase("EVEN", dataFlag)) {
        strategy = 0;
    }
    if (strategy == -1) {
        // ALL
        return;
    }
    // filter
    Iterator<String> it = eidList.iterator();
    while (it.hasNext()) {
        String str = it.next();
        int index = NumberUtils.toInt(str, -1);
        if (index % 2 != strategy) {
            it.remove();
        }
    }
}

通過代碼可知,推送任務(wù)配置時,將A組機(jī)器的值推成“ODD”,B組機(jī)器的值推成“EVEN”,即可實(shí)現(xiàn)A/B組的所有機(jī)器同時執(zhí)行定時任務(wù)的效果。

2、平滑的任務(wù)處理
默認(rèn)的三層分發(fā)通過Loader層獲取待處理的任務(wù),然后交由Executor來執(zhí)行,無法保證整個集群任務(wù)處理的量級。在待處理任務(wù)變多,或者集群機(jī)器擴(kuò)縮容變化頻繁的情況下,任務(wù)處理的峰值量級無法保證。同時由于各個層級之間的調(diào)用是TR oneway調(diào)用,是感知不到調(diào)用結(jié)果的,也就更難保證任務(wù)的平滑調(diào)用。為了達(dá)到任務(wù)平滑調(diào)用的目的,五福場景對Loader撈取任務(wù)數(shù)和單機(jī)任務(wù)qps做了優(yōu)化調(diào)整,保證了集群任務(wù)處理效率在預(yù)期范圍之內(nèi)。優(yōu)化的步驟如下:
1.新增任務(wù)配置。核心配置信息包括期望集群執(zhí)行任務(wù)總的qps、任務(wù)調(diào)度間隔,集群參與任務(wù)機(jī)器數(shù)。
2.計(jì)算單機(jī)qps和每次DB撈取任務(wù)的數(shù)量。
3.單機(jī)執(zhí)行時,根據(jù)計(jì)算好的qps來進(jìn)行限流調(diào)用。
上面三步做好之后,整個集群就能夠按照預(yù)期的qps進(jìn)行平滑的任務(wù)處理。
為什么這三步做完了之后就能達(dá)到預(yù)期的效果呢? 重點(diǎn)看下任務(wù)配置的解析代碼:
/**
 * 計(jì)算定時任務(wù)的相關(guān)配置
 *
 * 主要計(jì)算:
 *    scheduleSingleLimit 單機(jī)限流值
 *    scheduleLoaderCount loader撈取條數(shù)
 *
 * @param scheduleConfig
 */
public static SchedulerConfig calculateScheduleConfig(SchedulerConfig scheduleConfig) {
    final int qpsLimit = scheduleConfig.getScheduleWholeLimit();
    final int machineCounts = scheduleConfig.getScheduleMachineCounts();
    MtLogger.info(LOGGER,
        "【計(jì)算定時任務(wù)配置】-開始 任務(wù)名稱:{0},機(jī)器數(shù)量:{1},任務(wù)吞吐量:{2}.", scheduleConfig.getScheduleType(),
        machineCounts, qpsLimit);

    //定時任務(wù)的調(diào)度頻率是scheduleRate 秒執(zhí)行一次 所以scheduleRate秒中內(nèi)集群的整體吞吐量=qps限制*scheduleRate
    final int scheduleRate = scheduleConfig.getScheduleRatePerSec();
    long totalLoaderCounts = qpsLimit * TimeUnit.SECONDS.toSeconds(scheduleRate);

    //定時任務(wù)撈取的表數(shù)量為1000 所以到每個表的限制=totalLoaderCounts/1000
    long loaderCountPerTask = totalLoaderCounts / 1000;
    if (loaderCountPerTask < 1) {
        loaderCountPerTask = 1;
    }
    scheduleConfig.setScheduleLoaderCount((int) loaderCountPerTask);

    //整體限流通過單機(jī)限流實(shí)現(xiàn) 整體限流=單機(jī)限流*machineCounts
    final double singleQps = ((double) qpsLimit / machineCounts);
    //創(chuàng)建的限流需要1秒的預(yù)熱
    scheduleConfig.setScheduleSingleLimit(RateLimiter.create(singleQps, 1, TimeUnit.SECONDS));

    MtLogger.info(LOGGER,
        "【計(jì)算定時任務(wù)配置】-結(jié)束 任務(wù)名稱:{0},撈取條數(shù):{1},單機(jī)限流:{2}.", scheduleConfig.getScheduleType(),
        scheduleConfig.getScheduleLoaderCount(),
        scheduleConfig.getScheduleSingleLimit().getRate());

    return scheduleConfig;

}

通過代碼可知,推送的任務(wù)配置最終會生成兩個重要的配置信息:

1.單個Loader撈取的任務(wù)數(shù)。集群qps和調(diào)度間隔確定了一個調(diào)度間隔內(nèi)要處理的任務(wù)數(shù),結(jié)合eid分片數(shù)量(五福是千庫千表)確定每個Loader要撈取的任務(wù)數(shù)。
2.單機(jī)Executor執(zhí)行任務(wù)時的qps。預(yù)期集群qps和集群機(jī)器數(shù)確定了單機(jī)執(zhí)行任務(wù)時的qps,單機(jī)上通過Guava的RateLimit來達(dá)到限流的效果。如果請求超過了限制的qps,請求將會被阻塞。
下面以福氣樂園平分5000萬大獎的任務(wù)配置作為樣例來計(jì)算:

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹

相比通常情況下指定Loader每次撈取的任務(wù)數(shù),五福是通過集群qps和任務(wù)調(diào)度間隔來確定Loader需要撈取的任務(wù)數(shù)。因此一個調(diào)度間隔內(nèi)的任務(wù)數(shù)和集群能夠執(zhí)行的任務(wù)數(shù)是匹配上的,加上通過單機(jī)qps限制達(dá)到集群qps限制的效果,從而讓整個定時任務(wù)做到了平滑調(diào)用。簡而言之,優(yōu)化后的調(diào)度邏輯,能夠讓定時調(diào)度任務(wù)在機(jī)器維度和時間維度都能均勻平穩(wěn)的執(zhí)行。

支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹

上面的截圖是福氣樂園平分5000萬大獎?wù)鎸?shí)發(fā)獎時的調(diào)用監(jiān)控。通過監(jiān)控可以看到,每隔5秒鐘,整個集群Loader撈取的任務(wù)數(shù)是40000個。整個任務(wù)生命周期內(nèi),Executor執(zhí)行任務(wù)的qps在8000上下小范圍波動,沒有出現(xiàn)大范圍的波動,從而達(dá)到了平滑任務(wù)處理的預(yù)期效果。
五福定制三層分發(fā)任務(wù)處理框架,能夠很好的解決任務(wù)效率和平滑調(diào)用的問題,但也存在一些使用限制。每種任務(wù)的任務(wù)配置需要人工手動推送,而其中的機(jī)器數(shù)實(shí)際上很多時候并不是固定的。推送的機(jī)器數(shù)和實(shí)際集群擁有的機(jī)器數(shù)不匹配的結(jié)果就是單機(jī)限流失準(zhǔn),導(dǎo)致集群限流不符合預(yù)期,也就導(dǎo)致任務(wù)間隔內(nèi)撈取的任務(wù)數(shù)和能處理的任務(wù)數(shù)無法匹配上。五福場景下,機(jī)器數(shù)確定后一般不會出現(xiàn)大范圍變動,而且五福各種業(yè)務(wù)都屬于重點(diǎn)高保業(yè)務(wù),機(jī)器變動后大家都能及時感知到,所以這種定制邏輯在五福場景下是可以很好的運(yùn)行起來。日常的各種業(yè)務(wù),通常集群機(jī)器數(shù)并不是固定的,存在各種擴(kuò)縮容的情況,五福定制三層分發(fā)任務(wù)處理框架依舊不能保證任務(wù)的平滑調(diào)用。

三、結(jié)語

從單機(jī)到集群,再到五福定制集群定時任務(wù),本文逐步做了一個框架設(shè)計(jì)上的原理介紹。每種定時任務(wù)都有自己的優(yōu)點(diǎn)和缺陷,也都有自己的應(yīng)用場景。在工作中,要結(jié)合當(dāng)前的業(yè)務(wù)情況,選擇合適的定時任務(wù)進(jìn)行業(yè)務(wù)處理,避免設(shè)計(jì)上的失誤導(dǎo)致業(yè)務(wù)受損。以五福定制三層分發(fā)任務(wù)處理框架為例,雖然日常業(yè)務(wù)中,因?yàn)闄C(jī)器數(shù)量不固定,依舊無法做到任務(wù)的平滑調(diào)用,但我們可以借鑒最大化利用集群機(jī)器資源這一點(diǎn),同時開啟A/B組的定時任務(wù),從而實(shí)現(xiàn)任務(wù)調(diào)度真正的負(fù)載均衡,提高系統(tǒng)整體的穩(wěn)定性。

?

作者|金盛杰(司旭)文章來源地址http://www.zghlxwxcb.cn/news/detail-411180.html

到了這里,關(guān)于支付寶定時任務(wù)怎么做?三層分發(fā)任務(wù)處理框架介紹的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Zinx框架-游戲服務(wù)器開發(fā)002:框架學(xué)習(xí)-按照三層結(jié)構(gòu)模式重構(gòu)測試代碼+Tcp數(shù)據(jù)適配+時間輪定時器

    Zinx框架-游戲服務(wù)器開發(fā)002:框架學(xué)習(xí)-按照三層結(jié)構(gòu)模式重構(gòu)測試代碼+Tcp數(shù)據(jù)適配+時間輪定時器

    三層結(jié)構(gòu)重構(gòu)原有功能 自定義消息類,繼承UserData,添加一個成員變量szUserData 定義多個Role類繼承Irole,重寫ProcMsg函數(shù),進(jìn)行不同處理 定義protocol類,繼承Iprotocol,重寫四個函數(shù),兩個函數(shù)時原始 數(shù)據(jù)和用戶數(shù)據(jù)之間的轉(zhuǎn)換;另兩個用來找消息處理對象和消息發(fā) 送對象。 定

    2024年02月05日
    瀏覽(23)
  • Django框架使用定時器-APScheduler實(shí)現(xiàn)定時任務(wù):django實(shí)現(xiàn)簡單的定時任務(wù)

    系統(tǒng):windows10 python: python==3.9.0 djnago==3.2.0 APScheduler==3.10.1 1、創(chuàng)建utils包,在包里面創(chuàng)建schedulers包 utils/schedulers/task.py utils/schedulers/scheduler.py utils/schedulers/__init__.py 2、項(xiàng)目配置文件settings.py

    2024年02月12日
    瀏覽(17)
  • Ruoyi框架學(xué)習(xí)--定時任務(wù)

    在實(shí)際項(xiàng)目開發(fā)中Web應(yīng)用有一類不可缺少的,那就是定時任務(wù)。 定時任務(wù)的場景可以說非常廣泛,比如某些視頻網(wǎng)站,購買會員后,每天會給會員送成長值,每月會給會員送一些電影券; 比如在保證最終一致性的場景中,往往利用定時任務(wù)調(diào)度進(jìn)行一些比對工作;比如一些

    2023年04月20日
    瀏覽(26)
  • 定時任務(wù)框架快速入門

    定時任務(wù)框架快速入門

    1. Quartz 概述 Quartz 是一個開源的作業(yè)調(diào)度框架(job scheduler),幾乎可以集成到任何 Java 應(yīng)用程序中,從最小的獨(dú)立應(yīng)用程序到最大的電子商務(wù)系統(tǒng)。Quartz 可用于創(chuàng)建簡單或復(fù)雜的調(diào)度來執(zhí)行數(shù)十個、數(shù)百個甚至數(shù)萬個作業(yè);其任務(wù)被定義為標(biāo)準(zhǔn) Java 組件的作業(yè),這些組件幾乎可

    2023年04月22日
    瀏覽(17)
  • Spring Task(定時任務(wù))框架

    Spring Task(定時任務(wù))框架

    Spring Task 是Spring框架提供的任務(wù)調(diào)度工具,可以按照約定的時間自動執(zhí)行某個代碼邏輯。 應(yīng)用場景: 信用卡每月還款提醒 銀行貸款每月還款提醒 火車票售票系統(tǒng)處理未支付訂單 入職紀(jì)念日為用戶發(fā)送通知 等等… (只要是需要定時處理當(dāng)達(dá)到場景都可以使用Spring Task) cr

    2024年02月05日
    瀏覽(33)
  • 分布式定時任務(wù)框架 PowerJob

    分布式定時任務(wù)框架 PowerJob

    1.1 為什么需要使用定時任務(wù)調(diào)度 (1)時間驅(qū)動處理場景:整點(diǎn)發(fā)送優(yōu)惠券,每天更新收益,每天刷新標(biāo)簽數(shù)據(jù)和人群數(shù)據(jù)。 (2)批量處理數(shù)據(jù):按月批量統(tǒng)計(jì)報表數(shù)據(jù),批量更新短信狀態(tài),實(shí)時性要求不高。 (3)異步執(zhí)行解耦:活動狀態(tài)刷新,異步執(zhí)行離線查詢,與內(nèi)部

    2024年02月09日
    瀏覽(25)
  • 任務(wù)調(diào)度框架-如何實(shí)現(xiàn)定時任務(wù)+RabbitMQ事務(wù)+手動ACK

    任務(wù)調(diào)度框架-如何實(shí)現(xiàn)定時任務(wù)+RabbitMQ事務(wù)+手動ACK

    比如: 1.每天早上6點(diǎn)定時執(zhí)行 2.每月最后一個工作日,考勤統(tǒng)計(jì) 3.每個月25號信用卡還款 4.會員生日祝福 5.每隔3秒,自動提醒 10分鐘的超時訂單的自動取消,每隔30秒或1分鐘查詢一次訂單,拿當(dāng)前的時間上前推10分鐘 定時任務(wù),資源會有誤差的存在,如果使用定時任務(wù) 定時

    2024年02月08日
    瀏覽(25)
  • 你知道怎么實(shí)現(xiàn)定時任務(wù)嗎?

    你知道怎么實(shí)現(xiàn)定時任務(wù)嗎?

    諸位讀者都知道筆者寫東西都是用到才寫,筆者的學(xué)習(xí)足跡自從參加工作之后就是 非系統(tǒng) 學(xué)習(xí)了,公司里源代碼只要有筆者不知道的技術(shù)細(xì)節(jié),筆者就會仔細(xì)的研究清楚,筆者是不喜歡給自己留下問題的那種學(xué)習(xí)習(xí)慣。 筆者最近負(fù)責(zé)了消息發(fā)送的一些業(yè)務(wù)需求,由于筆者工

    2023年04月23日
    瀏覽(17)
  • 分布式定時任務(wù)調(diào)度框架Quartz

    分布式定時任務(wù)調(diào)度框架Quartz

    Quartz是一個定時任務(wù)調(diào)度框架,比如你遇到這樣的問題: 比如淘寶的待支付功能,后臺會在你生成訂單后24小時后,查看訂單是否支付,未支付則取消訂單 比如vip的每月自動續(xù)費(fèi)功能 … 想定時在某個時間,去做某件事 Quartz是一套輕量級的任務(wù)調(diào)度框架,只需要定義了 Job(

    2024年02月04日
    瀏覽(37)
  • 分布式任務(wù)調(diào)度,定時任務(wù)的處理方案

    分布式任務(wù)調(diào)度,定時任務(wù)的處理方案

    適用場景: Spring 定時任務(wù)是 Spring 框架提供的一種輕量級的任務(wù)調(diào)度方案,它的特點(diǎn)是簡單易用、輕量級。Spring 定時任務(wù)的執(zhí)行是在 單個節(jié)點(diǎn) 上進(jìn)行的,如果需要分布式任務(wù)調(diào)度,需要自己實(shí)現(xiàn)相應(yīng)的解決方案。 1.導(dǎo)入依賴版本自己控制 2.啟動類加上@EnableScheduling 3.編寫業(yè)

    2023年04月14日
    瀏覽(46)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包