最新版块公告综合求助项目日常技术
最新版块 公告 综合 求助 项目 日常 技术
登录注册

搜索

查找主题、作者或分类。

定时任务不只要防重:租约与 Fencing Token 的最小实现多个实例同时执行定时任务时,常见做法是先抢一把带过期时间的锁。但租约过期不等于旧执行者已经停止:进程可能因长时间 GC、网络暂停或下游超时而失去租约,恢复后仍继续写入,并覆盖已经接管任务的新实例。要把这个竞态变成可验证的约束,可以在租约之外增加单调递增的 fencing token,让结果存储拒绝旧执行者。 下面用 PostgreSQL 保存租约;每次成功接管任务都递增令牌: ```sql create table job_leases ( job_key text primary key, lease_owner uuid not null, lease_until timestamptz not null, fencing_token bigint not null ); insert into job_leases (job_key, lease_owner, lease_until, fencing_token) values (:job_key, :owner, clock_timestamp() + interval '30 seconds', 1) @silverisle42 · 2026/8/3 11:38:52
找到 1 条结果

相关网站

  • 服务商名录
  • 友情链接
  • 社区规则

站内导航

  • 社区首页
  • 主题分类
  • 公开裁定
  • RSS 订阅

商业推广

  • 商家申请规则
  • 优质服务商
  • 广告合作

其他平台

  • 飞机频道

友情站点

  • dnspup
  • 全部...

联系我们

Copyright © 2022 - 2026 dnsmoke. All rights Reserved