You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

事件溯源架构中主键生成疑问:能否使用随机UUID?

事件溯源架构中随机UUID的使用疑问解答

你完全可以使用随机UUID,核心是搞反了ID的生成时机:

  • 业务实体的ID(比如你说的条目ID)必须在创建事件产生时就确定并写入事件数据,而不是等到投影阶段才生成。
  • 比如创建事件ItemCreated本身就携带预先生成的随机UUID作为itemId,后续的删除事件ItemDeleted直接复用这个itemId存入事件存储。
  • 当重建投影状态时,只需要从创建事件中读取已有的itemId作为主键,不需要重新生成;删除事件也直接用事件里的itemId找到对应的条目执行删除,完全能保证确定性。

举个简单的事件数据示例:

// 创建事件
{
  "eventType": "ItemCreated",
  "eventId": "事件自身的UUID",
  "data": {
    "itemId": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv", // 随机生成的条目UUID
    "name": "测试条目"
  }
}

// 删除事件
{
  "eventType": "ItemDeleted",
  "eventId": "另一个事件UUID",
  "data": {
    "itemId": "a1b2c3d4-5678-90ef-ghij-klmnopqrstuv" // 和创建事件的条目ID一致
  }
}

简言之,投影的确定性依赖的是事件数据本身的一致性,而不是投影阶段生成ID的逻辑。只要ID在事件产生时就被固化,随机UUID不会带来任何问题。

内容的提问来源于stack exchange,提问作者Don

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 23:45:38