Skip to content

事件存储

本页整理旧 docs/EVENT_STORE_SYSTEM.md 的核心设计,用来说明 SoulBrowser 为什么需要事件存储,而不是只保留最后结果。

为什么需要事件存储

浏览器自动化系统天然需要保留过程信息,用于:

  • 调试和回放
  • 审计和追踪
  • 时间线展示
  • 导出任务证据

所以事件存储不只是日志系统,而是产品运行态的一部分。

双层模型

旧设计里强调热存储和冷存储分层:

  • Hot Storage:面向实时写入和短期读取
  • Cold Storage:面向持久化和历史查询

这类分层适合处理:

  • 高频事件快速流入
  • 后续回放和导出
  • 大量 observation / overlay / audit 数据

事件模型

一个可用的事件模型通常至少要包含:

  • event type
  • timestamp
  • route / session / task 上下文
  • payload
  • 附加元数据

这样前端、时间线、导出和排障工具才能共享同一批事实。

与 timeline 的关系

timeline 服务并不是独立生成真相,而是消费 event store。
也就是说:

  • event store 是底层事实
  • timeline 是面向展示与查询的视图

幂等性和脱敏

旧文档特别强调两件事:

  • 幂等性:避免重复写入或重复消费
  • 数据脱敏:避免把敏感内容直接沉到底层存储

这两点直接关系到上线后的可靠性和合规性。

对开发的启发

  • 不要把截图、状态、审计信息散落在多个完全无关的存储里。
  • 新增运行态事件时,要考虑它是否应该进入 event store。
  • 如果一个问题无法从 event / timeline 里复盘,通常说明底层事实沉淀不够。

相关页面

SoulBrowser Documentation