3d9ccff6e930eb5ab59ec4ab1f088b8cb51067e1
实现 15F 任务的三个核心组件:
capacity.go — CapacityMonitor(每 1-2 min 由 CapacityLoop 调用)
- 池水位检查:up/target < 70% 时发告警,10 min 内降频去重
- 探针失联检查:扫 probe:hb:{probeId},缺失发「探针失联」事件
- 驱动 Grayscale.Advance 推进养机档位
breaker.go — RedisBreaker(实现 Breaker 接口)
- 滑窗 ZSET sched:breaker:{tier}:{region},窗口 1h
- 阈值 N = ceil(池容量 × 30%),下限 3
- 窗口内计数 ≥ N → 置 tripped 标记位 + critical 告警
- Allow 恒 false 直到窗口滑出自动恢复,或管理员调 Reset
- Reset 清除 ZSET + trip flag,写 audit_log
config.go — SchedConfig + ConfigManager(全树阈值热加载)
- SchedConfig 集中定义 15D/15E/15F 所有阈值
- 来源:默认值 → YAML 文件 → 环境变量(三层叠加)
- 监听 SIGHUP,原子替换(atomic.Pointer[SchedConfig])
- 每次变更 diff 写 audit_log(AuditFn 回调)
测试(24 个用例,全绿):
- 窗口内第 N 次 Record 后 Allow 返回 false
- 窗口滑出后 Allow 自动恢复
- Reset 立即恢复 + audit 条目
- 下限 3 在小池(target=2)生效
- 65% 水位 → 告警;10 min 内不重复
- 探针心跳缺失 → 失联事件;存在 → 无告警
- YAML + env 覆盖 + SIGHUP Reload → 新阈值即时生效 + diff 审计
- 替换 stub 后 15E 全部集成测试仍绿
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Pangolin
面向中国大陆用户的终端 VPN(科学上网)项目。
- 设计方案:
docs/技术方案.md - 实施计划:
plan/ - 部署(Phase 0,容器化 + CI/CD):
deploy/
Phase 0 现状
数据面两条线,容器化、经 Gitea Actions 自动部署到节点,与现网服务隔离:
- Xray VLESS + REALITY(主线,经宿主 nginx SNI 分流)
- sing-box Hysteria2(晚高峰加速线,UDP 443)
部署细节见 deploy/README.md。
Description
Releases
22
client 1.1.1
Latest
Languages
Go
36%
Dart
21.3%
JavaScript
13%
HTML
12.8%
Shell
4.4%
Other
12.3%