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