yml2213 43270e04a6 收紧重试退避并把首发请求改成立即发出,发布0.3.1
- 退避上限从 5 秒压到 1.5 秒(含抖动最长约 1.9 秒),连续失败放大倍数 8→4,抖动 50%→25%:
  2026-10-03 实测库存只活了约 1.1 秒(PC2 四个实例 18:00:00.171~18:00:01.101 一直能锁到
  同一个礼包),而 PC1 默认实例的 31 个号在 18:00:00.225 失败后一直睡到 18:01:09.379,
  唯一有货的那段窗口被退避吃掉;超过 2 秒的等待都可能正好错过库存回流
- 首发请求不再随机等 150-700 毫秒,改为"第 0 个账号立即发出 + 其余按 8ms 步长错开",
  整批铺开不超过 300 毫秒(账号再多也不会拖长)。定时器本来就提前约 100ms 触发以补偿 RTT,
  再抖几百毫秒等于把这个提前量整个抵消,请求实际落到 t+150ms~t+650ms
- 锁单成功到首次支付的等待从 2-4 秒压到 300-700 毫秒:这段纯属把关键路径上的时间白送出去,
  "订单操作进行中"现在按"已受理、结果未定"快重试,不需要靠等待规避
- 支付退避上限同步收紧:频控 3s→2s,其它 2s→1.2s(在途仍为 300ms→1s)
- 新增 TestRetryDelayNeverBacksOffLong:遍历 75 秒 × 40 次连续失败,断言任何一次退避都
  小于 2 秒,并覆盖"重试间隔策略被配到 5000ms"的极端配置
- 新增 TestFirstWaveStartsImmediately:单账号步长必须为 0、位次从 0 递增、
  2/34/100/500/2000 个账号下步长 ≤8ms 且整批铺开 ≤300ms
- 设置页文案同步:退避"任何一次等待都不超过约 2 秒"、首发错开说明
2026-10-03 19:21:26 +08:00
2026-08-08 17:40:16 +08:00
2026-08-08 23:04:40 +08:00
2026-08-08 19:52:00 +08:00
2026-06-24 19:11:02 +08:00

斗鱼抢购系统

Wails v2 桌面应用。

开发运行

wails dev

构建

# 构建当前平台
wails build

# 交叉编译
GOOS=windows GOARCH=amd64 wails build
GOOS=darwin  GOARCH=amd64 wails build
GOOS=darwin  GOARCH=arm64 wails build
GOOS=linux   GOARCH=amd64 wails build

构建产物在 build/bin/ 目录。

项目结构

├── main.go                      # Wails 入口
├── app.go                       # App 结构体 + 前端可调用方法
├── frontend/
│   └── index.html               # 前端页面
├── internal/
│   ├── client/                  # 斗鱼接口客户端
│   ├── seckill/                 # 抢购调度器
│   ├── logger/                  # 日志系统
│   ├── trace/                   # HTTP 请求追踪
│   ├── image/                   # 成功图片生成
│   ├── config/                  # 配置管理
│   ├── types/                   # 类型定义
│   ├── constants/               # 常量
│   └── utils/                   # 工具函数
├── data/
│   └── user.txt                 # 账号文件
└── build/                       # 构建输出(gitignore)

环境变量

变量 说明 默认值
DOUYU_CONFIG 配置文件路径 config.json
DOUYU_USERS 账号文件路径 data/user.txt
DOUYU_LOG_DIR 日志目录 logs
DOUYU_SUCCESS_DIR 成功图片目录 success_images
DOUYU_FONT 自定义字体路径 自动检测系统字体
DOUYU_TRACE 启用 HTTP 追踪 关闭
DOUYU_TRACE_MAX_BODY trace 正文最大字节数 无限制
S
Description
No description provided
Readme
1.9 MiB
Languages
Go 66%
Vue 23%
TypeScript 6.1%
CSS 3.9%
Shell 0.9%