githubEdit

Liquidation Keeper

概述

Liquidation Keeper是Zanbara的自动清算机器人,负责监控所有用户持仓,在保证金不足时及时执行强制平仓,保护平台和用户利益。

Keeper工作原理

核心职责

  1. 实时监控: 每10秒扫描所有持仓

  2. 风险计算: 实时计算每个持仓的保证金率

  3. 清算触发: 保证金率<110%时立即清算

  4. 订单执行: 以市价快速平仓

  5. 资金结算: 处理清算后的资金分配

架构设计

┌─────────────────────────────────────────────┐
│         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%

清算后仍有负债的比例

性能优化

  1. 批量查询: 一次获取所有标记价格

  2. 增量扫描: 只检查有持仓的用户

  3. 优先级队列: 高风险优先处理

  4. 并行执行: 10个worker并发清算

  5. 缓存优化: Redis缓存用户状态

异常处理

常见异常

  1. 订单未成交: 重试3次,仍失败则人工介入

  2. 价格剧烈波动: 切换到紧急模式,加快扫描

  3. 流动性不足: 分批清算,避免冲击市场

  4. 系统故障: 自动切换到备用Keeper

应急预案

监控和告警

实时监控

  • Keeper运行状态

  • 清算队列长度

  • 平均执行时间

  • 成功/失败率

  • 穿仓事件

告警规则

告警通知

  • Slack频道实时通知

  • PagerDuty紧急呼叫(红色级别)

  • 邮件日报

  • Grafana Dashboard

Keeper高可用

冗余设计

  • 主Keeper: 实时运行

  • 备Keeper: 热备份,主故障时自动接管

  • 监控Keeper: 监控主备状态

故障转移

相关文档

Last updated