流程图:表、Redis Key、接口与状态流转

这张图专门解释数据怎么流、状态怎么变,以及下游怎么读。

flowchart LR
  subgraph MySQL_vps_info[MySQL vps_info:单机 API 的事实表]
    A1[id 主键]
    A2[ip_port_info 远程 SSH 入口]
    A3[username/password SSH 凭据]
    A4[proxy_ip 当前代理出口 IP]
    A5[score/delay 质量评分]
    A6[status: ok/unavailable/networkError]
    A7[message 异常或告警说明]
    A8[time 最近更新时间]
  end
  subgraph Redis_keys[Redis:批量代理池运行态]
    B1[vps_info hash:待管理机器清单]
    B2[proxy_pool hash:addr -> 当前代理状态]
    B3[proxy_catch zset:按 ts 保存新 IP 捕获记录]
    B4[restricted_proxy set:暂停更新名单]
  end
  subgraph Interfaces[接口/外部系统]
    C1["/api/vps/restart_dial 触发单台重拨"]
    C2["/api/vps/get_ip 查询单台状态"]
    C3["/api/vps/get_all 查询全部状态"]
    C4[adm proxy_report 接收上报]
    C5[adm proxylist 或 Redis vps_info 提供机器列表]
  end
  C1 --> A2
  C1 --> A3
  C1 --> D[SSH 重拨和测速]
  D -->|成功| S1[status=ok;写新 proxy_ip、score、delay、time]
  D -->|重拨异常| S2[status=unavailable;message 写失败原因]
  D -->|VPS 内部 ping 失败| S3[status=networkError;说明远端出网异常]
  D -->|SSH 失败| S4[update_info_ssh:只写 score/delay/message/status/time,不覆盖 proxy_ip]
  S1 --> A4
  S1 --> A5
  S1 --> A6
  S2 --> A6
  S2 --> A7
  S3 --> A6
  S3 --> A7
  S4 --> A5
  S4 --> A7
  C2 --> A4
  C2 --> A5
  C2 --> A6
  C3 --> A4
  C3 --> A5
  C3 --> A6
  C5 --> B1
  B1 --> E[ProxyPool 创建 Host 队列]
  B4 -->|命中| E1[Host 跳过更新]
  E --> F[Host.update_proxy]
  F -->|当前态读旧 IP| B2
  F -->|新 IP 且不同| B3
  F -->|每轮最终状态| B2
  F -->|上报结果| C4
  B2 --> G[下游代理消费者/管理面板读取当前可用代理]
  B3 --> H[排查换 IP 频率、历史质量和代理捕获情况]

说明

返回索引