論理時計の条件
- happend-before ()ならば、となる (Timestamp Completeness)
- はイベント
- ならば、 (Timestamp Soundness)
線形時間
- Scalar logical clocksとも
- 各プロセスは、線形時間を示す変数を持つ。
- 各プロセスが送信するメッセージは、線形時間を運ぶ変数を持つ。
- 各プロセスは、以下のイベントを発生させる。
- 送信イベント
- とする
- を送信する。
- はとなる
- 受信イベント
- を受信する
- 。
- はとなる。
- 計算イベント
- 計算を行う
- はとなる。
- 送信イベント
- 線形時間の性質
- ならば、である
- しかし、1.の逆は成り立たないことがある
- であるとき、かつとなるイベントが存在するかはわからない よって、線形時間は論理時計の条件1を充足するが、2は充足しない。
ベクタ時間
-
ベクタ時間の性質
- のとき、かつそのときに限り、である
- 論理時計の条件を満たしている
- だから、[因果関係]を表現できる
- 並行関係が保存されている(kekeho)
- 論理時計の条件を満たしている
- であるときに、かつとなるイベントが存在するかどうかはわからない
- のとき、かつそのときに限り、である
-
空間計算量が bitsになるので、大規模システムに適さないとされる
-
システムにおけるプロセス数をとしたときに、各プロセスは、となるベクターをタイムスタンプとして保持する。
-
プロセスは計算およびメッセージの送受信イベントが発生するたびに、をインクリメントする。
-
また、Lamportの論理クロックと同様にメッセージのペイロードにタイムスタンプを添付する。
-
タイムスタンプをペイロードに持つメッセージを受信した際には、ベクターのマージ操作を実行し、これをインクリメント前のタイムスタンプ値として採用する。
-
なお、ベクター間の順序関係は以下で定義される。
いろいろな論理時計
- Lamport Clock
- Vector Clock
- Synchronized clocks
- Google Spanner的なやつ
- [Hybrid Logical Clock]
- 因果関係を捉えつつ、NTPに近い物理時間を反映するクロック
- どんなんだ?(kekeho)
- Logical Physical Clocks
- 因果関係を捉えつつ、NTPに近い物理時間を反映するクロック
- Bloom Clock
- https://arxiv.org/abs/1905.13064
- The Bloom Clock to Characterize Causality in Distributed Systems | SpringerLink
- 偽陽性があるが、ベクタークロックと比べて空間効率がよい
- 偽陰性があると致命的だと思うけど、偽陽性なら多くのアプリケーションで許容できるんでは(kekeho)