数据流设计¶
数据流概览¶
User Request
↓
Gateway (写入 control stream)
↓
Worker (消费 control stream,处理任务)
↓
Redis Stream (写入 session data stream)
↓
Backend 或其他消费者 (读取 session data stream)
↓
Frontend (渲染实时 AI 响应)
控制流 vs 数据流¶
by-framework 采用控制流与数据流分离的设计:
控制流 (Control Stream)¶
- 路径:
byai_gateway:ctrl:agent_type:{agent_type} - 用途: 任务分发、调度指令
- 特点: 竞争消费,多 Worker 抢单
数据流 (Data Stream)¶
- 路径:
queue:data:stream - 用途: 流式输出、状态变更、产物数据
- 特点: 共享订阅,消费者无竞争
消息生命周期¶
- 发送: Client 调用
send_message()写入 control stream - 路由: Redis 根据 consumer group 分发到某个 Worker
- 处理: Worker 的
process_command()执行任务逻辑 - 输出: Worker 通过
context.emit_*()写入 data stream - 消费: Backend/WebSocket 读取 data stream 推送给前端
- 确认: Worker 处理完成后发送 XACK 确认消息