SuperAPI AI 工具集

leader-election

通用与其它

查看项目

更新于 10-15 20:30

技能介绍

用途:在多实例部署中选举出唯一领导者,保证同一时刻只有一个实例运行 cron 任务或处理队列,并在领导者失效时自动故障转移。

主要能力:通过数据库表 leader_election 记录 service_name、leader_id、term 与 last_heartbeat;提供 try_become_leader、leader_heartbeat、step_down 三个原子函数;核心概念包括心跳、超时、单调递增的 term(防止脑裂)以及跟随者竞争成为新领导者。

使用方式:先执行 migrations/leader_election.sql 建表与函数,再在 TypeScript 或 Python 中实例化 LeaderElection,传入 Supabase 客户端或数据库连接及配置(serviceName、candidateId、heartbeatIntervalMs、heartbeatTimeoutSeconds、onBecomeLeader、onLoseLeadership),调用 start() 启动,stop() 优雅退出。可在 onBecomeLeader 中启动 cron 或队列消费者,在 onLoseLeadership 中停止。

适用场景:单例 cron 任务、单例队列消费者、分布式 worker 协调、需要领导者死亡后自动接管的任务。

限制与注意:候选 ID 需唯一(建议含主机名或 PID);关闭时须调用 stop();执行工作前用 isCurrentLeader() 检查;心跳间隔应小于超时时间的三分之一;需处理 onLoseLeadership;频繁领导者变更应告警。资料未提供具体收费、平台支持范围与性能数据。