摘要:高性能高精度定時服務(wù),輕松管理千萬級定時任務(wù)。支持任務(wù)到期觸發(fā)和。支持創(chuàng)建延時任務(wù)和定時到期任務(wù),和原生保持相同接口,輕松使用。不支持任務(wù)輸出任務(wù)鉤子及維護模式。是不指定任務(wù)名時自動生成,每個任務(wù)名必須唯一,相同任務(wù)名重復(fù)定義將會自動覆蓋。
Forsun高性能高精度定時服務(wù),輕松管理千萬級定時任務(wù)。
定時服務(wù)項目地址:https://github.com/snower/forsun
laravel插件項目地址: https://github.com/snower/for...
輕松支持千萬級定時任務(wù)調(diào)度。
定時任務(wù)觸發(fā)推送到Queue,輕松支持跨機器和共性能分布式。
支持任務(wù)到期觸發(fā)command、Job、Shell、Http和Event。
支持驅(qū)動原生Laravel Schedule運行。
支持創(chuàng)建延時任務(wù)和定時到期任務(wù),和原生Laravel Schedule保持相同接口,輕松使用。
背景在實際項目中,存在大量需要定時或是延時觸發(fā)的任務(wù),比如電商中,延時需要檢查訂單是否支付成功,是否配送成功,定時給用戶推送提醒等等,常規(guī)做法是用 crontab 每分鐘掃碼數(shù)據(jù)看是否到達時間,繁瑣且擴展性伸縮性較差。
使用 forsun 服務(wù),可以簡單的針對每一個訂單創(chuàng)建一個定時任務(wù),配合異步隊列,可以輕松實現(xiàn)擴展性伸縮性,Apache Thrift 的編程接口也可以很容易的和 celery、laravel 配合。
其他場景下,比如失敗延時重試,使用 forsun 定時服務(wù)也可以很簡單就可以實現(xiàn)。
安裝安裝啟動forsun服務(wù),詳情請看 https://segmentfault.com/a/11...。
composer安裝forsun-laravel。
composer require "snower/forsun-laravel"配置
在 config/app.php 注冊 ServiceProvider 和 Facade
"providers" => [ // ... SnowerLaravelForsunServiceProvider::class, ], "aliases" => [ // ... "Forsun" => SnowerLaravelForsunFacade::class, ],
創(chuàng)建配置文件
php artisan vendor:publish --provider="SnowerLaravelForsunServiceProvider"
修改應(yīng)用根目錄下的 config/forsun.php 中對應(yīng)的參數(shù)即可。
使用 定義調(diào)度Artisan 命令調(diào)度。
//不指定name是自動生成 Forsun::plan()->command("emails:send --force")->daily(); //指定name Forsun::plan("email")->command(EmailsCommand::class, ["--force"])->daily();
隊列任務(wù)調(diào)度
Forsun::plan()->job(new Heartbeat)->everyFiveMinutes();
Shell 命令調(diào)度
Forsun::plan()->exec("node /home/forge/script.js")->daily();
Event事件調(diào)度
Forsun::plan()->fire("testevent", [])->everyMinute();
Http事件調(diào)度
Forsun::plan()->http("http://www.baidu.com")->everyMinute();
注意:
每個任務(wù)只能設(shè)置一次調(diào)度頻率。
不支持任務(wù)輸出、任務(wù)鉤子及維護模式。
Forsun::plan是不指定任務(wù)名時自動生成,每個任務(wù)名必須唯一,相同任務(wù)名重復(fù)定義將會自動覆蓋。
移除調(diào)度$plan = Forsun::plan()->command("emails:send --force")->daily(); $plan->remove(); $plan = Forsun::plan()->command("emails:send --force")->daily(); $plan_name = $plan->getName(); Forsun::remove($plan_name);調(diào)度頻率設(shè)置
方法 | 描述 |
---|---|
->hourly(); | 每小時運行 |
->hourlyAt(17); | 每小時的第 17 分鐘執(zhí)行一次任務(wù) |
->daily(); | 每天午夜執(zhí)行一次任務(wù) |
->dailyAt("13:00"); | 每天的 13:00 執(zhí)行一次任務(wù) |
->monthly(); | 每月執(zhí)行一次任務(wù) |
->monthlyOn(4, "15:00"); | 在每個月的第四天的 15:00 執(zhí)行一次任務(wù) |
->everyMinute(); | 每分鐘執(zhí)行一次任務(wù) |
->everyFiveMinutes(); | 每五分鐘執(zhí)行一次任務(wù) |
->everyTenMinutes(); | 每十分鐘執(zhí)行一次任務(wù) |
->everyFifteenMinutes(); | 每十五分鐘執(zhí)行一次任務(wù) |
->everyThirtyMinutes(); | 每半小時執(zhí)行一次任務(wù) |
->at(strtoetime("2018-03-05 12:32:12")); | 在指定時間2018-03-05 12:32:12運行一次 |
->interval(10); | 從當(dāng)前時間開始計算每10秒運行一次 |
->later(5); | 從當(dāng)前時間開始計算稍后5秒運行一次 |
->delay(30); | 從當(dāng)前時間開始計算稍后30秒運行一次 |
需要復(fù)雜定時控制建議生成多個定時任務(wù)或是在處理器中再次發(fā)起定時任務(wù)計劃更簡便同時也性能更高。
調(diào)度器應(yīng)該盡可能使用Event或是Job通過Queue Work可以更高性能運行。
驅(qū)動原生Laravel Schedule運行#注冊 php artisan forsun:schedule:register #取消注冊 php artisan forsun:schedule:unregister
原文鏈接: https://blog.snower.me/2018/0...
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/28358.html
摘要:業(yè)務(wù)對賬平臺的核心目的,就是及時發(fā)現(xiàn)類似問題,并及時修復(fù)。這對對賬平臺的吞吐量造成了挑戰(zhàn)。五健康度對賬中心可以拿到業(yè)務(wù)系統(tǒng)及其所在整個鏈路的數(shù)據(jù)一致性信息。在分布式環(huán)境下,沒有人能回避數(shù)據(jù)一致性問題,我們對此充滿著敬畏。 一、引子 根據(jù)CAP原理,分布式系統(tǒng)無法在保證了可用性(Availability)和分區(qū)容忍性(Partition)之后,繼續(xù)保證一致性(Consistency)。我...
摘要:同盾技術(shù)總監(jiān)張新波在第二期移動時代互聯(lián)網(wǎng)金融的架構(gòu)趨勢中闡述了同盾是如何從零開始打造千萬級實時風(fēng)控云服務(wù),具體介紹了同盾系統(tǒng)平臺構(gòu)建過程中主要需要解決的三大難題,以及解決這些問題的具體時實踐過程。 同盾科技,是由阿里、Paypal 反欺詐專家創(chuàng)建的,國內(nèi)第一家風(fēng)險控制與反欺詐云服務(wù)提供商,其涉及領(lǐng)域包括電商、B2B、互聯(lián)網(wǎng)金融、游戲等。同盾技術(shù)總監(jiān)張新波在 UPYUN Open ...
摘要:需求用戶個人消息,平臺消息平臺給所有人發(fā)送消息。原因如果平臺用戶量較大時,假如萬,發(fā)一條系統(tǒng)消息,將要給萬的人發(fā)送一條,就是的消息記錄。千萬級的數(shù)據(jù)表,后期通過索引優(yōu)化,結(jié)構(gòu)優(yōu)化,業(yè)務(wù)邏輯優(yōu)化,避免大量并發(fā)查詢。 說明 本文都是參加工作的實際情況,希望對大家有所幫助。—— 螞蟻爬樹不怕高,有心學(xué)習(xí)不怕老。 需求 1.用戶個人消息,平臺消息(平臺給所有人發(fā)送消息)。2.用戶未讀消息展示,...
閱讀 2079·2021-11-24 09:39
閱讀 802·2021-09-30 09:48
閱讀 989·2021-09-22 15:29
閱讀 2429·2019-08-30 14:17
閱讀 1898·2019-08-30 13:50
閱讀 1356·2019-08-30 13:47
閱讀 990·2019-08-30 13:19
閱讀 3430·2019-08-29 16:43