题目
并行节点更新共享状态时,如何处理覆盖、合并和冲突?
答案
先为每个字段定义更新规则。任务状态可能只允许单一所有者写入;证据集合可以按 ID 合并;消息列表可以追加并去重;计数需要明确是否允许累加。
不能对整个状态对象使用最后写入覆盖,否则两个节点分别补充的数据会互相丢失。可以让节点只返回自己修改的字段,再由 Reducer 或事务逻辑合并。
对同一业务实体的互斥修改,使用状态版本、乐观锁或数据库事务检测冲突。发生冲突后重新读取并判断,不能把两个不相容的结果强行拼起来。

并行完成顺序不稳定,合并规则最好对顺序不敏感;可能重复执行的结果还要按事件 ID 去重。对于文件和数据库等外部资源,状态合并并不能替代实际资源的并发控制。
