Page 247 - 《软件学报》2026年第1期
P. 247

244                                                        软件学报  2026  年第  37  卷第  1  期


                               c 1 、 c 2  和  3  名投票者  Voter 1、Voter 2、Voter 3. 其中, Voter 1  和  Voter 2  c 1 , Voter 3  投给
                 账本. 存在候选人                                                              投给
                 c 2 . 虽然节点  Node 1  和  Node 2  分别以不同的顺序收到了   3  个投票请求   (Node 1  按顺序收到  Voter 1、Voter 2  和
                 Voter 3, 但是  Node 2  逆序收到  Voter 3、Voter 2  和  Voter 1), 由于投票具有累加性质, 两个节点的最终结果相同, 可
                 以做出相同的决策.



                            Voter 1
                                                                                       Results
                              (+1)
                             c 1                                                         (+2)
                                                          (+1)    (+1)    (+1)         c 1
                                                         c 1     c 2     c 1
                                                                                         (+1)
                                           Node 1                                      c 2
                            Voter 2
                              (+1)                                                     Results
                             c 1
                                                                                         (+2)
                                                          (+1)    (+1)    (+1)         c 1
                                                         c 2     c 1     c 1
                                                                                         (+1)
                                                                                       c 2
                                           Node 2
                            Voter 3  Vote                     Execution (CRDT)
                              (+1)
                             c 2
                                               图 10 CRDT  并发控制的执行流程

                    文献  [120] 对数据复制过程进行建模, 首次提出了基于状态的               CRDT (CvRDT) 和基于操作的     CRDT (CmRDT)
                 这两种等效的建模方法. CvRDT        交换完整的状态, 将本地状态与接收状态合并. 而               CmRDT  只通过向其他节点传
                 输更新操作来传播状态. CRDT        有无协调和最终一致性的特点, 天然适用于高并发, 但单纯利用                   CRDT  理论还不足
                 以达到高性能和扩展性.
                    联盟链   FabricCRDT [121] 将  Fabric 与  CRDT  结合, 同时支持  CRDT  交易与普通交易. 普通交易和  CRDT  交易位
                 于相同区块, 采用不同的并发控制算法分别执行. 因此, 系统可以单独并发处理                       CRDT  交易, 提升性能. 但是, 所有
                 CRDT  交易均经过共识协议共识, 不能发挥          CRDT  无协调一致的优点.
                    OrderlessChain [39] 利用应用层面的约束收敛    (invariant-confluence) 性质, 使用基于客户端的两阶段提交协议
                 (2PC), 用无协调一致性替代了共识阶段. 不同于           FabricCRDT, OrderlessChain  充分发挥  CRDT  无协调一致的优点,
                 但系统仅支持弱隔离级别, 并且节点各自保存的区块链的物理结构也因为缺乏全局共识而不能保持一致 (但账本
                 满足最终一致).
                  2.5   并发执行总结
                    表  4  综述了上述系统所采用的并发执行技术. 由于跨域联盟链系统通常面临数据中心间节点高延迟和低带宽
                 的挑战, 因此, 选用的并发执行算法必须充分考虑这些基本情况. 基于此, 本文建议以下并发控制策略. 1) 跨域联盟
                 链应避免使用传统的        2PL  并发控制, 这是因为    2PL  需要在事务提交前持有锁. 在跨域部署时, 节点间的高通信延
                 迟会显著增加锁的持有时间, 降低并发度. 2) 由于缩短了加锁时间, OCC                  可以显著提升性能. 然而, OCC       仅适用于
                 冲突率较低或处理能力较低的环境. 在需要高吞吐率且冲突率高的场景下, 由于交易提交延迟较高, OCC                                会导致
                 大量的读陈旧数据 (stale read), 进而频繁终止事务. 除此之外, 由于交易在共识前执行, 共识需要额外传输交易的
                 读写集, OCC  在跨域网络带宽较低的场景下性能较差. 3) 基于依赖图的冲突检测相比于乐观并发控制减少了事务
                 的冲突率, 但是部分系统 (如       Fabric++) 构建依赖图时开销较高. 因此, 若跨域联盟链系统已经采用               OCC  并发控制,
                 结合依赖图可以有效降低终止率. 4) 跨域联盟链使用确定性并发控制性能较好. 首先, 由于执行结果是确定性的,
                 确定性并发控制通常在共识后执行区块内交易. 因此, 共识不需要额外传输交易的读写集, 节省公网带宽, 也不存
                 在  OCC  高终止率的情况. 其次, 确定性并发控制不需要节点间进行额外协调来决定执行顺序, 也不存在                           2PL  长时
                 间持有锁的情况. 5) 不同于以上强隔离级别算法, CRDT              的区块不需要使用共识协议, 不会产生高额的协调开销.
   242   243   244   245   246   247   248   249   250   251   252