goInterLock是具有分布式锁定机制的 golang 作业/任务调度程序。在分布式系统中,锁定是防止任务在有调度程序的每个瞬间执行,例如,如果您的应用程序有一个任务调用一些外部 API 或每 10 分钟执行一些数据库查询,则锁定阻止进程在每个实例中运行该应用程序,您最终每 10 分钟多次运行该任务。
go get github.com/ehsaniara/gointerlock |
本地调度程序(单个应用程序)
(间隔每 2 秒)
var job = gointerlock.GoInterval{ |
分布式调度器(扩展)
现有 Redis 连接
您应该已经配置了 Redis 连接并将其传递到GoInterLock. 还要确保您为每个工作提供唯一的名称
步骤1:redisConnection.Rdb从现有应用程序配置redis连接并将其传递给Job。例如:
var redisConnector = redis.NewClient(&redis.Options{ |
第二步:将redis连接传入 GoInterval:
var job = gointerlock.GoInterval{ |
在这两个示例中myJob都是您的任务计划功能
内置Redis连接器
另一种方法是使用现有的 redis 连接:
var job = gointerlock.GoInterval{ |
上面代码表示GoInterLock 在使用go-redis进行 Redis 连接