ARCHITECTURE.md 3.4 KB

分布式搜索系统架构文档

系统角色

┌───────────────┬───────────────────────────────┐ │ Master │ Worker │ ├───────────────┼───────────────────────────────┤ │ • API服务 │ • 计算节点 │ │ • 任务调度中心 │ • 浏览器实例管理 │ │ • 状态监控 │ • 搜索任务执行 │ └───────────────┴───────────────────────────────┘

核心执行流程

sequenceDiagram
    participant M as Master
    participant W as Worker
    participant B as Browser
    participant D as Database
    
    W->>M: 注册服务
    loop 心跳机制
        W->>M: 发送心跳(含负载指标)
    end
    M->>W: 分配搜索任务
    W->>B: 启动浏览器实例
    B->>W: 返回页面句柄
    W->>B: 执行搜索操作
    W->>D: 保存搜索结果
    W->>M: 更新任务状态
    M->>D: 记录最终状态

关键机制说明

服务发现机制

  1. Worker启动注册

    # worker_server.py
    await client.post(f"{master_url}/api/workers/register")
    
  2. Master维护注册表

    # api_server.py
    system_state.registered_workers[worker_id] = {
    "last_heartbeat": datetime.now(),
    "metadata": worker.dict(),
    "current_load": 0
    }
    

浏览器生命周期管理

graph TB
    W[Worker启动] --> B[初始化BrowserCore]
    B --> H[创建浏览器实例]
    H --> S[绑定搜索处理器]
    S --> T[执行任务]
    T --> C[关闭浏览器]

数据流向

graph LR
    WEB[搜索引擎网站] -->|抓取| B[浏览器实例]
    B -->|解析| W[Worker]
    W -->|存储| DB[(数据库)]
    W -->|状态上报| M[Master]
    M -->|任务分配| W

部署拓扑

                    ┌──────────────┐
                    │   Master     │
                │               │
 │
                    └──────┬───────┘
                           │       
         ┌─────────────────┼─────────────────┐
         ▼                 ▼                 ▼
┌──────────────┐   ┌──────────────┐   ┌──────────────┐
│   Worker 1   │   │   Worker 2   │   │   Worker N   │
│ 浏览器实例 1   │   │ 浏览器实例 2   │   │ 浏览器实例 N   │
└──────────────┘   └──────────────┘   └──────────────┘

容错机制

  1. 心跳超时检测(3分钟)
  2. 浏览器实例异常重启
  3. 任务失败自动重试(最大5次)
  4. 数据库事务回滚机制

扩展性设计

  • 横向扩展:通过增加Worker节点提升吞吐量
  • 纵向扩展:单个Worker支持多浏览器实例(待实现)
  • 动态负载均衡:基于current_load指标的任务分配

监控指标

# worker健康检查响应
{
    "status": "healthy",
    "browser_connected": True,
    "current_load": 2
}