帶有分散式鎖的Go計劃任務排程器- DEV
goInterLock是具有分散式鎖定機制的 golang 作業/任務排程程式。在分散式系統中,鎖定是防止任務在有排程程式的每個瞬間執行,例如,如果您的應用程式有一個任務呼叫一些外部 API 或每 10 分鐘執行一些資料庫查詢,則鎖定阻止程式在每個例項中執行該應用程式,您最終每 10 分鐘多次執行該任務。
go get github.com/ehsaniara/gointerlock |
本地排程程式(單個應用程式)
(間隔每 2 秒)
var job = gointerlock.GoInterval{ Interval: 2 * time.Second, Arg: myJob, } err := job.Run(ctx) if err != nil { log.Fatalf("Error: %s", err) } |
分散式排程器(擴充套件)
現有 Redis 連線
您應該已經配置了 Redis 連線並將其傳遞到GoInterLock. 還要確保您為每個工作提供唯一的名稱
步驟1:redisConnection.Rdb從現有應用程式配置redis連線並將其傳遞給Job。例如:
var redisConnector = redis.NewClient(&redis.Options{ Addr: "localhost:6379", Password: "myRedisPassword", DB: 0, }) |
第二步:將redis連線傳入 GoInterval:
var job = gointerlock.GoInterval{ Interval: 2 * time.Second, Arg: myJob, Name: "MyTestJob", RedisConnector: redisConnector, } err := jobTicker.Run(ctx) if err != nil { log.Fatalf("Error: %s", err) } |
在這兩個示例中myJob都是您的任務計劃功能
內建Redis聯結器
另一種方法是使用現有的 redis 連線:
var job = gointerlock.GoInterval{ Name: "MyTestJob", Interval: 2 * time.Second, Arg: myJob, RedisHost: "localhost:6379", RedisPassword: "myRedisPassword", //remove this line if no pass (AUTH) } err := job.Run(context.Background()) if err != nil { log.Fatalf("Error: %s", err) } |
上面程式碼表示GoInterLock 在使用go-redis進行 Redis 連線
相關文章
- 分散式任務排程分散式
- 分散式排程任務-ElasticJob分散式AST
- LTS分散式任務排程部署分散式
- 分散式任務排程系統設計小結分散式
- Aloha:一個分散式任務排程框架分散式框架
- 中介軟體---分散式任務排程---Celery分散式
- 使用寶塔計劃任務啟動laravel排程器Laravel
- micro-job分散式任務排程框架更新分散式框架
- 分散式任務排程平臺XXL-JOB分散式
- 新一代分散式任務排程框架分散式框架
- 淺談分散式任務排程系統Celery的設計與實現分散式
- Spring Boot Quartz 分散式叢集任務排程實現Spring Bootquartz分散式
- 開源分散式任務排程系統就選:DolphinScheduler分散式
- LeetCode 621 任務排程器LeetCode
- 分散式任務排程平臺XXL-JOB快速搭建教程分散式
- SpringBoot自定義starter開發分散式任務排程實踐Spring Boot分散式
- 分散式任務排程內的 MySQL 分頁查詢最佳化分散式MySql
- 分散式系統架構之構建你的任務排程中心分散式架構
- 基於任務排程的企業級分散式批處理方案分散式
- 任務排程
- 一個簡單的基於 Redis 的分散式任務排程器 —— Java 語言實現Redis分散式Java
- 整合了這個分散式任務排程平臺,真的很爽~~分散式
- 一個輕量級的分散式定時任務排程平臺-Cloudtask分散式Cloud
- go語言實戰課程《Go語言開發分散式任務排程 輕鬆搞定高效能Crontab》——推薦分享Go分散式
- Java 分散式任務排程平臺:PowerJob 快速開始+配置詳解Java分散式
- Easy Scheduler 1.0.2 釋出,分散式工作流任務排程系統分散式
- Airflow 任務排程AI
- Laravel 任務排程Laravel
- LiteOS-任務篇-原始碼分析-任務排程函式原始碼函式
- 力扣-621. 任務排程器力扣
- 力扣 621. 任務排程器力扣
- 621. 任務排程器 (構造)
- 聊聊PowerJob的任務排程
- 基於Redis的任務排程設計方案Redis
- SchedulerX 如何幫助使用者解決分散式任務排程難題?分散式
- Go Runtime 的排程器Go
- 在叢集環境中執行的Spring計劃排程任務 - Stack OverflowSpring
- Spring 指南(排程任務)Spring