Files
makemd/docs/01_Architecture/02_System_Interoperability.md

557 lines
19 KiB
Markdown
Raw Normal View History

# 系统互通架构System Interoperability Architecture
> 本文档定义 Crawlful Hub 系统各组件之间的互通机制和通信规范。
## 1. 互通架构总览
### 1.1 核心互通模型
```
┌─────────────────────┐ ┌─────────────────────┐ ┌─────────────────────┐
│ 前端控制台 │────▶│ 后端服务 │────▶│ 运营代理Agent
│ (Frontend Console) │◀────│ (Backend Service) │◀────│ (Operation Agent) │
└─────────────────────┘ └─────────────────────┘ └─────────────────────┘
┌─────────────────────┐
│ 平台适配器 │
│ (Platform Adapter) │
└─────────────────────┘
┌─────────────────────┐
│ 第三方平台 │
│ (External Platform) │
└─────────────────────┘
```
### 1.2 互通层次
| 互通层次 | 通信协议 | 说明 |
|---------|---------|------|
| 前端与后端互通 | RESTful API、WebSocket | 前端控制台与后端服务的通信 |
| 后端与Agent互通 | WebSocket、消息队列MQ | 后端服务与运营代理的通信 |
| Agent与平台互通 | 平台API、浏览器自动化 | 运营代理与第三方平台的通信 |
## 2. 前端与后端互通
### 2.1 API通信
| 项目 | 规范 |
|------|------|
| **基础API** | RESTful风格支持CRUD操作 |
| **认证机制** | JWT TokenJSON Web Token支持Bearer认证 |
| **请求格式** | JSON格式统一错误处理 |
| **响应格式** | 统一响应体结构 |
**标准响应格式**
```json
{
"code": 200,
"message": "success",
"data": { /* 业务数据 */ },
"timestamp": "2026-03-21T10:30:00Z"
}
```
### 2.2 WebSocket通信
| 功能 | 说明 |
|------|------|
| **实时数据推送** | 店铺状态、任务进度、操作结果实时同步 |
| **事件通知** | 操作完成、异常告警、系统通知 |
| **心跳保活** | 保持连接活跃,支持断线重连机制 |
**WebSocket消息格式**
```json
{
"type": "event|data|heartbeat",
"event": "task_completed|error|notification",
"payload": { /* 消息内容 */ },
"timestamp": "2026-03-21T10:30:00Z"
}
```
### 2.3 前端API调用示例
```typescript
// 绑定店铺
const bindStore = async (storeData) => {
const response = await fetch('/api/operation-agent/stores', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': `Bearer ${token}`
},
body: JSON.stringify(storeData)
});
return response.json();
};
// 同步商品
const syncProducts = async (storeId) => {
const response = await fetch(`/api/operation-agent/stores/${storeId}/products/sync`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${token}`
}
});
return response.json();
};
```
## 3. 后端与运营代理Agent互通
### 3.1 WebSocket通信
| 特性 | 说明 |
|------|------|
| **双向通信** | 后端下发任务Agent回传执行结果 |
| **加密传输** | TLS/SSL加密确保通信安全 |
| **认证机制** | Agent注册时进行身份验证Token-based |
| **消息格式** | 统一JSON消息格式 |
**任务下发消息格式**
```json
{
"type": "task",
"taskId": "task-123",
"action": "syncProducts",
"params": {
"storeId": "store-123",
"limit": 100
},
"priority": "high|normal|low",
"timeout": 300000
}
```
### 3.2 消息队列Message Queue
| 特性 | 说明 | 技术选型 |
|------|------|---------|
| **任务分发** | 异步任务分发,解耦前后端 | RabbitMQ / Redis / BullMQ |
| **任务优先级** | 支持高、中、低优先级任务 | Priority Queue |
| **任务持久化** | 确保任务不丢失,支持故障恢复 | Persistent Storage |
| **失败重试** | 自动重试机制支持指数退避Exponential Backoff | Retry Policy |
### 3.3 状态同步
| 机制 | 说明 | 频率 |
|------|------|------|
| **心跳保活** | Agent定期发送心跳报告运行状态 | 每30秒 |
| **状态回传** | 任务执行状态实时回传到后端 | 实时 |
| **健康检查** | 后端定期检查Agent健康状态 | 每60秒 |
### 3.4 后端API调用示例
```typescript
// 向Agent下发任务
const sendTaskToAgent = async (agentId, task) => {
const ws = getAgentWebSocket(agentId);
if (ws && ws.readyState === WebSocket.OPEN) {
ws.send(JSON.stringify({
type: 'task',
taskId: generateTaskId(),
action: task.action,
params: task.params
}));
} else {
// 发送到消息队列
await messageQueue.send('agent-tasks', {
agentId,
task
});
}
};
// 处理Agent回传
const handleAgentResponse = (message) => {
const data = JSON.parse(message);
switch (data.type) {
case 'task_result':
handleTaskResult(data.taskId, data.result);
break;
case 'heartbeat':
updateAgentStatus(data.agentId, data.status);
break;
case 'error':
handleAgentError(data.agentId, data.error);
break;
}
};
```
## 4. 运营代理与第三方平台互通
### 4.1 平台API调用
| 项目 | 说明 |
|------|------|
| **认证机制** | OAuth 2.0、API密钥API Key、签名认证等 |
| **请求格式** | 符合各平台API规范RESTful/GraphQL |
| **响应处理** | 统一解析和错误处理,标准化输出 |
| **速率限制** | 遵守平台API Rate Limit实现限流保护 |
### 4.2 浏览器自动化Browser Automation
| 技术 | 说明 |
|------|------|
| **无界面浏览器** | Puppeteer / Playwright / Selenium |
| **操作模拟** | 点击、输入、滚动、表单提交等用户行为模拟 |
| **数据提取** | DOM解析、XPath/CSS选择器、数据抓取 |
| **异常处理** | 页面变化检测、验证码识别、反爬策略应对 |
### 4.3 适配器模式Adapter Pattern
| 组件 | 说明 |
|------|------|
| **统一接口** | `IPlatformAdapter` 接口定义标准操作 |
| **平台实现** | 每个平台独立实现适配器Platform-specific Adapter |
| **数据标准化** | 统一数据模型,标准化输出格式 |
| **错误处理** | 平台特定错误捕获、转换、上报 |
### 4.4 Agent平台调用示例
```typescript
// 使用平台适配器同步商品
async function syncProducts(storeId, platform) {
const adapter = platformAdapterFactory.createAdapter(platform);
try {
// 授权
await adapter.authorize(getAuthInfo(storeId));
// 获取商品列表
const products = await adapter.getProducts(100, 0);
// 处理商品数据
const processedProducts = processProducts(products);
// 回传数据
await sendToBackend({
type: 'products_synced',
storeId,
products: processedProducts
});
} catch (error) {
// 处理错误
await sendToBackend({
type: 'error',
storeId,
error: error.message
});
}
}
```
## 5. 远程人工交互互通
### 5.1 实时屏幕传输Real-time Screen Streaming
| 技术 | 说明 |
|------|------|
| **屏幕捕获** | 使用 Puppeteer / Playwright 捕获浏览器屏幕 |
| **编码压缩** | JPEG / WEBP / H.264 编码,降低传输带宽 |
| **实时传输** | WebSocket / WebRTC 实时传输屏幕数据 |
| **前端渲染** | Canvas / Video 元素渲染远程屏幕 |
### 5.2 操作指令传输Remote Control
| 环节 | 说明 |
|------|------|
| **操作捕获** | 前端捕获用户点击、输入、滚动等操作 |
| **坐标映射** | 将前端坐标转换为远程浏览器坐标Resolution Mapping |
| **指令传输** | WebSocket 传输操作指令到 Agent |
| **指令执行** | Agent 在远程浏览器执行操作指令 |
### 5.3 会话管理Session Management
| 功能 | 说明 |
|------|------|
| **会话创建** | 后端创建远程交互会话,分配资源 |
| **权限验证** | 验证用户权限,确保操作安全 |
| **状态跟踪** | 会话状态机:初始化 → 活跃 → 空闲 → 结束 |
| **资源清理** | 会话结束时清理资源,保存操作日志 |
### 5.4 远程交互示例
```typescript
// 前端捕获点击操作
const handleCanvasClick = (e) => {
const rect = canvas.getBoundingClientRect();
const x = e.clientX - rect.left;
const y = e.clientY - rect.top;
// 发送点击指令
ws.send(JSON.stringify({
type: 'user_action',
action: {
type: 'click',
x,
y
}
}));
};
// Agent执行操作指令
const handleUserAction = async (page, action) => {
switch (action.type) {
case 'click':
await page.mouse.click(action.x, action.y);
break;
case 'type':
await page.keyboard.type(action.text);
break;
case 'keypress':
await page.keyboard.press(action.key);
break;
}
};
```
## 6. 多Agent互通
### 6.1 Agent管理服务Agent Management Service
| 功能 | 说明 |
|------|------|
| **Agent注册** | Agent启动时向管理服务注册上报元数据 |
| **资源分配** | 根据店铺需求、任务类型分配Agent资源 |
| **负载均衡** | 基于负载的任务分发Load Balancing |
| **健康监控** | 实时监控Agent健康状态、性能指标 |
### 6.2 Agent间通信Inter-Agent Communication
| 场景 | 说明 |
|------|------|
| **任务协调** | 避免多Agent操作同一店铺产生冲突 |
| **资源共享** | 共享配置、状态信息、缓存数据 |
| **故障转移** | Agent故障时自动转移任务Failover |
### 6.3 多VPS部署Multi-VPS Deployment
| 功能 | 说明 |
|------|------|
| **VPS管理** | 管理多VPS资源池动态分配 |
| **IP隔离** | 同平台店铺使用不同IP避免关联 |
| **网络配置** | 配置VPS网络、防火墙、代理 |
| **自动化部署** | CI/CD自动化部署和配置Agent |
### 6.4 Agent管理示例
```typescript
// 分配任务到合适的Agent
function assignTask(task) {
const store = getStoreById(task.storeId);
if (store.requiresIpIsolation) {
// 需要IP隔离的店铺使用专用Agent
return findDedicatedAgent(store);
} else {
// 不需要IP隔离的店铺使用负载最低的Agent
return findLeastLoadedAgent(store.platform);
}
}
// 监控Agent健康状态
function monitorAgents() {
setInterval(async () => {
const agents = await getAllAgents();
for (const agent of agents) {
if (!agent.heartbeatReceived) {
// Agent可能离线触发故障转移
await failoverAgent(agent.id);
}
}
}, 30000); // 每30秒检查一次
}
```
## 7. 安全互通
### 7.1 认证与授权Authentication & Authorization
| 层级 | 机制 | 说明 |
|------|------|------|
| **API认证** | JWT Token + Refresh Token | 定期轮换,支持无感知续期 |
| **Agent认证** | API Key + HMAC签名 | 基于密钥的双向认证 |
| **权限控制** | RBAC基于角色的访问控制 | 角色-权限-资源三级管控 |
| **操作审计** | Audit Log | 全链路操作记录,支持追溯 |
### 7.2 数据安全Data Security
| 措施 | 说明 |
|------|------|
| **传输加密** | TLS 1.3 / SSL端到端加密 |
| **存储加密** | AES-256-GCM 加密敏感数据 |
| **凭证管理** | 使用密钥管理服务KMS禁止明文存储 |
| **数据脱敏** | API返回数据按需脱敏PII保护 |
| **访问控制** | 细粒度权限控制,最小权限原则 |
### 7.3 网络安全Network Security
| 措施 | 说明 |
|------|------|
| **TLS加密** | 所有通信强制使用TLS 1.3 |
| **防火墙** | VPS防火墙 + 云防火墙双层防护 |
| **速率限制** | API限流Rate Limiting防止滥用 |
| **DDoS防护** | 云厂商DDoS防护 + 应用层限流 |
| **IP白名单** | 关键接口限制访问IP范围 |
### 7.4 安全最佳实践
| 实践 | 说明 |
|------|------|
| **最小权限原则** | Agent仅获取执行任务所需的最小权限 |
| **安全审计** | 定期安全审计,检查配置和代码 |
| **漏洞扫描** | 自动化漏洞扫描SAST/DAST |
| **依赖管理** | 及时更新依赖,修复安全漏洞 |
| **密钥轮换** | 定期轮换API密钥和证书 |
## 8. 性能优化
### 8.1 通信优化
| 优化手段 | 说明 |
|---------|------|
| **消息压缩** | Gzip / Brotli 压缩传输数据,减少带宽使用 |
| **批量处理** | 批量发送和处理数据减少请求次数Batch Processing |
| **缓存策略** | Redis 缓存常用数据,减少重复请求 |
| **异步处理** | 非关键操作异步处理提高响应速度Async/Await |
| **长连接** | WebSocket 长连接,减少连接建立开销 |
### 8.2 资源优化
| 资源类型 | 优化措施 |
|---------|---------|
| **连接池** | 数据库连接池、HTTP连接池复用连接 |
| **内存管理** | 优化内存使用避免内存泄漏定期GC |
| **CPU优化** | 减少CPU密集型操作使用Worker线程 |
| **磁盘I/O** | 减少磁盘I/O使用内存缓存和SSD |
| **网络I/O** | 合并请求使用HTTP/2或HTTP/3 |
### 8.3 监控与调优
| 环节 | 说明 |
|------|------|
| **性能监控** | APM工具如Prometheus + Grafana实时监控系统性能指标 |
| **瓶颈分析** | 识别性能瓶颈CPU/内存/网络/磁盘),进行针对性优化 |
| **负载测试** | 使用JMeter/k6模拟高负载场景测试系统性能 |
| **自动调优** | 根据负载自动调整系统参数Auto-scaling |
## 9. 容错与灾备Fault Tolerance & Disaster Recovery
### 9.1 错误处理Error Handling
| 机制 | 说明 |
|------|------|
| **异常捕获** | 全局异常捕获统一错误处理Try-Catch + Global Handler |
| **错误重试** | 自动重试失败操作支持指数退避Exponential Backoff |
| **降级策略** | 服务降级Degradation保障核心功能可用 |
| **错误通知** | 实时告警通知(钉钉/飞书/邮件),及时响应 |
### 9.2 故障恢复Fault Recovery
| 措施 | 说明 |
|------|------|
| **数据备份** | 定期全量+增量备份,异地多副本存储 |
| **灾难恢复** | 制定DR计划RPO<1小时RTO<4小时 |
| **高可用性** | 多Agent部署无单点故障HA Architecture |
| **自动恢复** | Agent故障自动重启任务自动重分配 |
### 9.3 容灾方案Disaster Recovery
| 方案 | 说明 |
|------|------|
| **多区域部署** | 多可用区AZ部署避免单点故障 |
| **数据同步** | 跨区域数据实时同步,确保数据一致性 |
| **故障转移** | 自动故障转移Automatic Failover |
| **业务连续性** | 确保业务持续运行Business Continuity |
## 10. 总结
系统互通是 Crawlful Hub 的核心设计之一通过标准化的通信机制和接口实现了前端控制台、后端服务、运营代理Agent和第三方平台之间的无缝互通。这种设计不仅提高了系统的可扩展性和可维护性也为 100% AI 开发测试落地提供了坚实的技术基础。
在实际部署中,需要根据具体的业务需求和技术环境,选择合适的互通方案,并不断优化和改进,以适应不断变化的业务需求和技术发展。
---
## 11. 互通规范
### 11.1 接口命名规范
| 项目 | 规范 |
|------|------|
| **API路径** | RESTful风格小写字母单词间用连字符kebab-case<br>示例:`/api/v1/product-management/products` |
| **方法命名** | 驼峰命名法camelCase动词+名词格式<br>示例:`getProductList``createOrder` |
| **参数命名** | 驼峰命名法camelCase清晰表达参数含义<br>示例:`pageSize``sortBy` |
### 11.2 消息格式规范
| 项目 | 规范 |
|------|------|
| **数据格式** | 所有通信使用 JSON 格式application/json |
| **消息结构** | 统一包含 `type``data``timestamp``traceId` 等字段 |
| **错误处理** | 统一错误码和错误消息格式支持国际化i18n |
**标准消息格式示例**
```json
{
"type": "event|data|error|heartbeat",
"event": "task_completed|error|notification",
"data": { /* 业务数据 */ },
"timestamp": "2026-03-21T10:30:00Z",
"traceId": "trace-123456",
"code": 200,
"message": "success"
}
```
### 11.3 安全规范
- **认证**所有API调用必须进行身份认证
- **授权**:基于角色的访问控制
- **加密**:所有传输数据必须加密
- **审计**:所有操作必须记录审计日志
### 11.4 性能规范
- **响应时间**API响应时间不超过500ms
- **并发处理**:支持高并发请求
- **缓存策略**:合理使用缓存减少响应时间
- **批量处理**:支持批量操作减少请求次数
## 12. 互通示例
### 12.1 完整业务流程示例
#### 商品采集流程
1. **前端**:用户选择平台,设置采集参数
2. **后端**`ProductController`接收请求,调用`ProductService`
3. **后端**`ProductService`生成采集任务,发送到消息队列
4. **Agent**接收任务调用对应平台Adapter执行采集
5. **Agent**:回传采集结果到后端
6. **后端**`ProductService`处理采集结果,存储到数据库
7. **后端**通过WebSocket推送采集结果到前端
8. **前端**:展示采集结果,提供后续操作入口
#### 自动上架流程
1. **前端**:用户设置上架参数,触发自动上架
2. **后端**`AutoListingController`接收请求,调用`AutoListingService`
3. **后端**`AutoListingService`生成上架任务,发送到消息队列
4. **Agent**接收任务调用平台Adapter执行上架
5. **Agent**:回传上架结果和截图到后端
6. **后端**`AutoListingService`更新任务状态,存储上架结果
7. **后端**通过WebSocket推送上架结果到前端
8. **前端**:展示上架状态,提供效果分析
## 13. 未来扩展
### 13.1 微服务架构
- **服务拆分**:将核心服务拆分为独立的微服务
- **服务发现**:使用服务发现机制管理服务实例
- **负载均衡**:自动负载均衡提高系统可用性
- **容错机制**:服务降级和熔断保护
### 13.2 事件驱动架构
- **事件总线**:使用消息队列实现事件驱动
- **事件溯源**:通过事件记录系统状态变更
- **CQRS**:命令查询责任分离,提高系统性能
### 13.3 边缘计算
- **边缘Agent**在边缘节点部署Agent减少延迟
- **本地处理**:部分计算在本地完成,减少网络传输
- **智能调度**:根据网络状况和负载自动调度任务