知识卡片

configSeq是排队等待期间配置变更的乐观并发检测

专业/工作 · 532.a

内容

交易消息从客户端提交到真正被排序打包之间存在时间差,这段时间里通道配置完全可能已经被其他交易更新。Fabric的解法不是加锁阻塞所有交易等配置更新完成,而是给每条消息打上提交时刻的通道配置序号configSeq,出块前重新比较该序号与当前最新序号:如果没变就直接放行,如果变了就重新走一遍过滤验证再排序。这本质上是乐观并发控制思路——先假设不冲突直接处理,事后发现确实冲突了再补救,而不是靠悲观锁串行化所有交易,从而避免配置变更把整个通道的交易处理拖入停顿。

参考来源

《Hyperledger Fabric技术内幕:架构设计与实现原理》第2章《Orderer排序节点》