architecture.md 3.0 KB

系统架构文档

组件概览

系统架构图

graph TD
    A[前端界面] -->|HTTP API| B(FastAPI后端)
    B -->|Redis| C[代理池管理]
    B -->|Celery| D[Worker集群]
    C --> E[本地代理实例]
    D --> F[分布式任务]

核心组件说明

1. 前端界面 (Vue3 + Element-Plus)

  • 采用组合式API+语法糖开发
  • 通过FastAPI挂载静态文件
  • 主要功能:
    • 代理池状态监控
    • Worker任务管理
    • 浏览器配置管理
    • 系统代理设置

2. FastAPI后端

classDiagram
    class SubscriptionManager{
        +redis_client: Redis
        +list_proxies_mgr: Dict[int, ProxyManager]
        +download_subscription()
        +create_custom_config()
        +start_proxy()
        +ping_proxies()
    }
    class ProxyManager{
        +mimo_exe: str
        +config_path: str
        +start_proxy()
        +stop_proxy()
        +ping_proxies()
    }
    class ProcessManager{
        +processes: dict
        +start_process()
        +stop_process()
    }

3. 代理池管理系统

  • Redis存储结构:

    # 代理池集合(自动去重)
    redis_client.sadd('proxy_pool', *healthy_proxies)
    # 自动过期机制
    redis_client.expire('proxy_pool', interval*2)
    
  • 健康检查机制:

    • 定时任务(默认80秒)
    • 端口可达性检测
    • 代理质量评估(延迟测试)

4. Worker管理系统

  • 基于Celery的分布式任务系统
  • 任务类型:
    • 网页爬取任务
    • 数据处理任务
    • 浏览器自动化任务
  • 通信机制:

    # 任务调用示例
    celery_app.send_task('search_worker.add', args=[2, 2])
    

数据流设计

sequenceDiagram
    前端->>+后端: /api/proxy/proxies (GET)
    后端->>+Redis: SMEMBERS proxy_pool
    Redis-->>-后端: 代理列表
    后端-->>-前端: 返回代理状态
    
    前端->>后端: /api/worker/browser_config (POST)
    后端->>Celery: 发送配置更新任务
    Celery->>Worker: 应用新配置
    Worker-->>Celery: 确认结果
    Celery-->>后端: 任务状态
    后端-->>前端: 操作结果

核心特性

  1. 代理管理
  2. 自动订阅更新
  3. 多实例隔离(端口分配)
  4. 智能健康检查
  5. 流量控制策略

  6. Worker管理

  7. 分布式任务调度

  8. 浏览器配置热更新

  9. 任务状态监控

  10. 异常自动恢复

  11. 系统集成

  12. 基于Redis的代理池共享

  13. 跨进程管理(ProcessManager)

  14. Windows系统代理集成

  15. 日志统一管理

部署架构

单机部署(当前):
前端 + 后端 + Redis + Celery Worker

未来扩展:
           [Redis]
            /   \
[管理节点]       [Worker节点1]
 前端+后端       [Worker节点2]
           [Worker节点...]

性能指标

项目 单机规格 扩展目标
代理实例 5-10个 无上限
任务吞吐 100任务/分钟 500+任务/分钟
延迟 <200ms <100ms
可用性 99% 99.9%