# 分布式搜索系统架构文档 ## 系统角色 ┌───────────────┬───────────────────────────────┐ │ Master │ Worker │ ├───────────────┼───────────────────────────────┤ │ • API服务 │ • 计算节点 │ │ • 任务调度中心 │ • 浏览器实例管理 │ │ • 状态监控 │ • 搜索任务执行 │ └───────────────┴───────────────────────────────┘ ## 核心执行流程 ```mermaid 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启动注册 ```python # worker_server.py await client.post(f"{master_url}/api/workers/register") ``` 2. Master维护注册表 ```python # api_server.py system_state.registered_workers[worker_id] = { "last_heartbeat": datetime.now(), "metadata": worker.dict(), "current_load": 0 } ``` ### 浏览器生命周期管理 ```mermaid graph TB W[Worker启动] --> B[初始化BrowserCore] B --> H[创建浏览器实例] H --> S[绑定搜索处理器] S --> T[执行任务] T --> C[关闭浏览器] ``` ## 数据流向 ```mermaid 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指标的任务分配 ## 监控指标 ```python # worker健康检查响应 { "status": "healthy", "browser_connected": True, "current_load": 2 } ```