行为与一致性规范

本节定义跨语言一致的行为约束,任何实现必须遵守。

确定性规则

  • 禁止使用非确定性来源参与逻辑分支(系统时间、随机数、外部服务回包等)
  • 必须通过输入流承载所有外部变化
  • 逻辑顺序由协议字段决定,不能依赖到达时间

Epoch 处理规则

  • 每个 Epoch 内消息被确定性排序后执行
  • Actor 在一个 Epoch 内顺序处理 inbox
  • 状态只在 Epoch 边界对外可见

消息排序规则(最小一致性)

  • 排序键固定为 (epoch, channelId, qos(desc), sourceId, sourceSeq)
  • 同键冲突禁止;如果出现冲突视为协议错误

迟到与缺失策略

  • 迟到消息只允许进入下一个 Epoch 或丢弃(由配置决定)
  • 丢失输入必须被显式记录并产生可审计事件

一致性验证

  • 通过可回放输入流验证一致性
  • 每个 Epoch 结束计算 stateHash,用于跨语言对比

stateHash 规则

  • 使用 FNV-1a 64-bit
  • 输入为 UTF-8 字符串:state:<value>
  • 输出为 16 位小写十六进制(零填充)

测试要求(必须)

  • 对同一份输入向量,各语言实现输出一致 stateHash
  • 所有协议错误必须可被测试用例捕获
Last Updated:
Contributors: cuihairu