跳转至

数据流设计

数据流概览

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
  • 用途: 流式输出、状态变更、产物数据
  • 特点: 共享订阅,消费者无竞争

消息生命周期

  1. 发送: Client 调用 send_message() 写入 control stream
  2. 路由: Redis 根据 consumer group 分发到某个 Worker
  3. 处理: Worker 的 process_command() 执行任务逻辑
  4. 输出: Worker 通过 context.emit_*() 写入 data stream
  5. 消费: Backend/WebSocket 读取 data stream 推送给前端
  6. 确认: Worker 处理完成后发送 XACK 确认消息