分布式系统中拜占庭容错寄存器的实现与分析
1. 引言
在分布式系统中,寄存器抽象是一个重要的概念,尤其是在面对各种故障模型时。本文将探讨在任意故障模型下,特别是存在拜占庭故障的情况下,(1, N) 拜占庭安全寄存器和 (1, N) 拜占庭规则寄存器的相关内容,包括其规范、算法实现以及性能分析。
2. (1, N) 拜占庭安全寄存器
2.1 接口与属性
(1, N) 拜占庭安全寄存器的接口和属性如下表所示:
| 模块 | 详情 |
| ---- | ---- |
| 名称 | (1, N)-ByzantineSafeRegister,实例 bonsr,有写入者 w |
| 事件请求 | ⟨bonsr, Read ⟩:发起对寄存器的读操作
⟨bonsr, Write | v ⟩:发起对寄存器的写操作,写入值为 v,仅由进程 w 执行 |
| 事件指示 | ⟨bonsr, ReadReturn | v ⟩:完成读操作,返回值为 v
⟨bonsr, WriteReturn ⟩:完成写操作,仅在进程 w 发生 |
| 属性 | BONSR1:终止性,若正确进程发起操作,操作最终完成
BONSR2:有效性,非并发写的读操作返回最后写入的值 |
2.2 规范说明
在崩溃故障的上下文中,具有安全语义的寄存器通常被跳过,因为简单算法就能提供规则寄存器语义。但在任意故障进程抽象中,考虑 (1, N) 拜占庭安全寄存器是有意义的。它与 (1, N) 规则寄存器类似,但有效性属性对并发操作的返回结果未作规定,即只有非并发写的读操作必须返回最后写