Liquidation Keeper
概述
Liquidation Keeper是Zanbara的自动清算机器人,负责监控所有用户持仓,在保证金不足时及时执行强制平仓,保护平台和用户利益。
Keeper工作原理
核心职责
实时监控: 每10秒扫描所有持仓
风险计算: 实时计算每个持仓的保证金率
清算触发: 保证金率<110%时立即清算
订单执行: 以市价快速平仓
资金结算: 处理清算后的资金分配
架构设计
┌─────────────────────────────────────────────┐
│ Liquidation Keeper Service │
├─────────────────────────────────────────────┤
│ │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ Monitor │───→│ Risk │ │
│ │ Thread │ │ Calculator │ │
│ └─────────────┘ └──────────────┘ │
│ │ │ │
│ ↓ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ Liquidation Queue │ │
│ │ (Priority Queue) │ │
│ └─────────────────────────────────┘ │
│ │ │
│ ↓ │
│ ┌─────────────┐ ┌──────────────┐ │
│ │ Executor │───→│ Order │ │
│ │ Pool (10) │ │ Submitter │ │
│ └─────────────┘ └──────────────┘ │
│ │ │
│ ↓ │
│ ┌─────────────────────────────────┐ │
│ │ Settlement Engine │ │
│ └─────────────────────────────────┘ │
│ │
└─────────────────────────────────────────────┘监控频率
扫描策略
正常模式: 每10秒全量扫描
高风险模式: 每5秒扫描(市场波动>5%)
紧急模式: 每2秒扫描(市场波动>10%)
优化技术
清算执行机制
并发控制
全局最多10个并发清算
每个用户同时只能清算1个仓位
使用Redis分布式锁防止重复
优先级队列(保证金率最低优先)
执行流程
重试机制
性能指标
关键指标
指标
目标值
当前值
说明
监控延迟
<100ms
82ms
检测到清算条件的时间
执行延迟
<10秒
6.8秒
从触发到成交的时间
成功率
>99%
99.7%
清算成功执行的比例
并发数
≤10
平均3.2
同时进行的清算数
穿仓率
<0.1%
0.08%
清算后仍有负债的比例
性能优化
批量查询: 一次获取所有标记价格
增量扫描: 只检查有持仓的用户
优先级队列: 高风险优先处理
并行执行: 10个worker并发清算
缓存优化: Redis缓存用户状态
异常处理
常见异常
订单未成交: 重试3次,仍失败则人工介入
价格剧烈波动: 切换到紧急模式,加快扫描
流动性不足: 分批清算,避免冲击市场
系统故障: 自动切换到备用Keeper
应急预案
监控和告警
实时监控
Keeper运行状态
清算队列长度
平均执行时间
成功/失败率
穿仓事件
告警规则
告警通知
Slack频道实时通知
PagerDuty紧急呼叫(红色级别)
邮件日报
Grafana Dashboard
Keeper高可用
冗余设计
主Keeper: 实时运行
备Keeper: 热备份,主故障时自动接管
监控Keeper: 监控主备状态
故障转移
相关文档
Last updated