选举服务
选举服务
限制只能单个节点运行的服务
启用
修改main函数,添加内容
import (
"github.com/go-home-admin/home/app/election"
)
func main() {
app := providers.NewApp()
app.Run([]constraint.KernelServer{
election.GetServer(func() {
logrus.Info("我是老大")
logrus.Info("我才可以启动定时服务")
}),
// http服务
http.GetServer(),
// Job消费服务
queues.GetServer(),
})
}
机制
利用redis锁实现排斥同时启动服务,如果选举出来后,主节点会保持心跳占用锁,如果主动关闭,那么会触发广播信息,其他节点会立刻重新选举。
没有收到广播时候,其他节点也会按默认值60秒查询锁是否被释放。