論文翻訳: Logical Physical Clocks and Consistent Snapshots in Globally Distributed Databases
Sandeep Kulkarni*, Murat Demirbas**, Deepak Madeppa**, Bharadwaj Avva**, and Marcelo Leone*
*Michigan State University
**University at Buffalo, SUNY
Abstract
分散システムにおける時間の扱いに関して、理論と実践の間には根本的な乖離が存在する。従来の分散システム理論は時間概念を意図的に排除し、並行性を論理的に扱うための抽象概念として "因果関係追跡" (causality tracking) を導入した。一方、実際のシステムでは厳密なクロック同期の実現が困難であることから、物理的な時刻情報 (NTP) を採用しつつも、ベストエフォート的な実装に留まっていた。この理論と実践の間のギャップを埋め、分散システムにおける時間管理の理論的基盤と実用的実装を整合させるため、本研究では論理クロックと物理クロックの双方の利点を統合したハイブリッド論理クロック (HLC) を提案する。HLC は論理クロックと同様に因果関係関係を捕捉可能であり、分散システムにおける一貫性のあるスナップショットの識別を容易にする。同時に、HLC は論理クロックを常に NTP クロックに近似した状態に保つため、物理クロックや NTP クロックの代替としても利用できる。さらに HLC は 64 ビット NTP タイムスタンプ形式に適合しており、NTP のよじれや不確実性に対しても耐性がある。本研究では、HLC が wait-free トランザクションの順序制御や、マルチバージョン型グローバル分散データベースにおけるスナップショット読み取り操作において、多くの利点をもたらすことを実証する。
Table of Contents
1 導入
1.1 時間の簡潔な歴史
時間は幻想である。
- Albert Einstein
論理クロック (LC): LC [12] は 1978 年に Lamport によって分散システムにおけるイベントのタイムスタンプ付与と順序付けの手法として提案された。LC は物理的な時間 (例えば NTP クロック) とは独立した概念であり、ノードはクロックにアクセスできず、メッセージ遅延やノードの処理速度・処理能力に上限が存在しない。捕捉される因果関係は "happened-before" (hb) と呼ばれ、これは時間の経過ではなく情報の伝達に基づいて定義される1。LC は分散システム理論においては有用であるが、1) LC を使用するとイベントを物理的な時間軸と関連付けてクエリーを行うことが不可能である点、2) hb を捉えるために、LC は全ての通信が現在のシステム内で行われ、バックチャネル通信が存在しないことを前提としている点、といった現代の分散システム環境では実用的ではない点がいくつかある。これは現代の統合型で疎結合なシステム環境 (system of systems) においては時代遅れの前提条件である。
1988 年にはベクトルクロック (VC) [7, 19] が LC のベクトル化バージョンとして提案された。VC では各ノードでベクトルを保持し、そのノードが他のノードの論理クロックについて持っている知識を追跡する。LC は一貫性のあるスナップショットを 1 つの (関与するすべてのノードで同じ LC 値を持つもの) を見つけるのに対して、VC は可能なすべての一貫性のあるスナップショットを特定できる。これはアプリケーションのデバッグで有用である。Figure 1 に示すように、LC では (a, w) が一貫性カット (consistent cut) として検出されるが、VC は (b, w) や (c, w) も一貫性カットとして識別する。しかし残念ながら、VC の空間要件はシステム内のノード数に比例するため、実用的には許容できないレベルとなる。
物理時間 (PT): PT はネットワークタイムプロトコル (NTP) [20] によって同期されたノードの物理時計を利用する。分散システムにおいて完全なクロック同期を実現することは不可能であるため、PT には不確実性の範囲が付随する。PT は物理時刻を使用してタイムスタンプを付与することで LC の欠点を回避できるが、1) 不確実性の範囲が重複する場合、PT ではイベントの順序付けが不可能となる。NTP は通常、公開インターネット環境において数十ミリ秒単位の精度で時刻を維持でき、理想的な条件下のローカルエリアネットワーク内では 1 ミリ秒単位の精度を達成できる。しかし、非対称的な経路やネットワーク輻輳によって時折 100 ミリ秒以上の誤差が生じることがある。2) PTには、閏秒 [13, 14] や POSIX 時間への非単調更新 [8] といったいくつかのよじれ (kink) が存在し、これらによってタイムスタンプが逆行する現象が発生する可能性がある、という新たな欠点も生じる。
TrueTime (TT): TT は Google が分散型マルチバージョンデータベース Spanner [2] の開発のために最近提案した時刻同期方式である。TT は、各クラスタに配備された GPS 時計や原子時計によって実現される高精度なクロック同期機構に依存している。TT は LC/VC/PT の一部の欠点を回避できるが、新たな欠点も生じる: 1) TT の実装には専用ハードウェアと独自開発の高精度クロック同期プロトコルが必要であり、これは多くのシステム (例えばパブリッククラウドプロバイダーからリースしたノードを使用する場合など) にとっては実現が困難である。2) TT を因果関係を尊重するイベント順序付けに用いる場合、
ハイブリッド時間 (HT): HT とは、安定化因果決定論的マージ問題 (stabilizing causal deterministic merge problem) [10] を解決するために、VC と PT クロックの両方の特性を統合した時間概念として提案された手法である。HT では各ノードが自身の PT クロックに関する他ノードの知識を保持する VC を維持する。HT は PT クロックのクロック同期性という前提条件を利用して VC から不要なエントリを削除することで、因果関係追跡に伴うオーバーヘッドを削減する。実際のシステムにおいては、ノードの HT のサイズは、直近の
1.2 本研究の貢献
本論文では、分散システムにおける時刻同期とタイムスタンプ付与の理論 (LC) と実践 (PT) の間に存在するギャップを埋めることを目的とする。さらに、TT の保証を一般化・強化する新たな手法を提案する。
我々はハイブリット論理クロック (Hybrid Logical Clock; HLC) と呼ばれる論理クロック版の HT アルゴリズムを提案する。HLC は、物理クロック (PT および TT と同様の概念) と論理クロック (LC と同様の概念) の両方を改良したものである。HLC は常に自身の論理クロックを NTP クロックに近似させるように設計されており、これにより分散 Key-Value ストアやデータベースにおけるスナップショット読み取りなど、様々なアプリケーションにおいて物理クロックや NTP クロックの代替として使用することが可能となる。最も重要な点として、HLC は論理クロックの特性 (
) を保持するため、HLC はクロック同期の不確実性を待つ必要なく、事前の調整も必要とせず、事後的な方法で一貫性のあるグローバルスナップショットを取得し返却することができる。 HLC は NTP と後方互換性があり、64 ビットの NTP タイムスタンプ形式に適合する。さらに HLC は NTP プロトコルに対して重ね合わせ的に動作する (つまり、HLC は物理クロックを読み取るだけで更新は行わない) ため、HLC は NTP を使用するアプリケーションと干渉することなく並行して動作させることができる。加えて、HLC は特定のサーバ-クライアントアーキテクチャを必要としない汎用的な設計となっている。HLC は WAN 環境におけるピアツーピアノード構成でも動作し、各ノードが異なる NTP サーバを使用することを許容する2。セクション 3 では、HLC アルゴリズムを提示するとともに HLC の空間要件に関する厳密な上限値を証明し、この上限値が因果推論のための LC 特性を HLC が満たすのに十分であることを示す。
HLC は一般的な NTP の問題 (非単調な時刻更新を含む) を隠蔽することで耐性を提供し、さらに時刻同期が劣化した状態においても処理の進行と因果関係情報を捉えることができる。HLC は自己安定化機能を備えた耐障害性システムであり、セクション 4 で詳述するように、クロック変数の任意の破損に対しても耐性がある。
我々は HLC を実装し、様々な展開シナリオ下における HLC の運用実験結果を提供する。セクション 5 では、ストレステスト環境下においても HLC が適切に制御可能であり、クロック値のサイズが一定の範囲内に収まることを実証する。これらの実用的な境界は我々の分析で証明された理論的境界よりもはるかに小さい値である。我々の HLC 実装は https://github.com/AugmentedTimeProject から匿名で利用可能である。
HLC は分散データベース [2, 11, 15, 16, 22, 24] における一貫性のあるスナップショットの識別に直接的な応用がある。また、分散システムにおける因果メッセージロギング [1]、ビザンチン障害耐性プロトコル [9]、分散デバッグ [21]、分散ファイルシステム [18]、分散トランザクション [25] など、多くの分散システムプロトコルにおいても有用である。セクション 6 では、分散データベースにおけるスナップショット読み取りにおける HLC の利点を具体的に示す。
- 1イベント
がイベント よりも時間的に先行する ( happened-before ) とは、 と が同じノード上で発生し、 が よりも時間的に先行している場合、または が送信イベントであり、 がそれに対応する受信イベントである場合、または前二者に基づいて推移的に定義される。 - 2実際には、HLC はアドホックなクロック同期プロトコル [17] でも動作可能であり、NTP に限定されるものではない。
2 予備知識
分散システムは時間の経過とともにその構成ノード数が変動するノードの集合によって構成されるシステムである。各ノードは、送信動作、受信動作、およびローカル動作という 3 種類の動作を実行できる。タイムスタンプ付与アルゴリズムの目的はシステム内の各イベントに対してタイムスタンプを割り当てることにある。タイムスタンプ付与アルゴリズムは大文字で表記し、このアルゴリズムによって割り当てられたタイムスタンプは対応する小文字で表記する。例えば Lamport [12] の論理クロックアルゴリズムを LC と表記し、このアルゴリズムがイベント
happened-before
既存の文献における研究成果に基づき、以下の命題が成り立つ:
3 HLC: ハイブリッド論理クロック
本セクションでは、我々の HLC アルゴリズムを紹介するためにまず単純な実装方法から始める。続いて HLC の正しさを証明し、その性能に関する厳密な上限値を示す。さらに、分散システムにおける HLC の有用な特徴についても詳細に解説する。
3.1 問題定義
HLC の目的は、LC が提供するものと同様の一方向因果関係検出 (one-wey causality detection) を実現しつつ、クロック値が常に物理クロック (NTP クロック) に近い値を維持することにある。HLC に関する正式な問題定義は以下の通りである。
分散システムにおいて、各イベント
の空間要件は 個の整数で表現可能である。
は有限の空間で表現される。
は に近い値となる。すなわち は有界である。
第一の要件は HLC が提供する一方向因果関係情報を捉えるものである。第二の要件は、
最後に、第四の要件は
3.2 ナイーブアルゴリズムの説明
Figure 3 に示すアルゴリズムが問題定義で示された最初の 2 つの要件を満たしていることは容易に確認できる。しかしながら、このナイーブなアルゴリズムは 4 つ目の要件を満たしておらず、これが空間制約下での表現における 3 つ目の要件の違反にもつながる。この 4 つ目の要件違反を示すため、Figure 4 に示す反例を参照されたい。この図は
この無制限なクロックドリフト問題の根本原因は、ナイーブアルゴリズムが
この反例は、ノードの物理クロックが当該ノード上の任意の 2 つのイベント間で少なくとも 1 回はインクリメントされるという要件を満たしている場合でも成立することに注意。Figure 4 はこの制約を
システム内の全ノードにまたがって物理クロックの更新速度やイベント発生速度に関する仮定に依存して HLC の正しさと有界性を証明する代わりに、次セクションでは HLC を適切に実装する方法を示す。
3.3 HLC アルゴリズム
コンピュータサイエンスにおけるあらゆる問題は
さらなるレベルの間接参照によって解決可能である。
― David Wheeler ー
我々は反例から得られた知見を使用して正しい HLC アルゴリズムを開発した。このアルゴリズムでは、ナイーブアルゴリズムにおける
HLC アルゴリズムの構造を Figure 5 に示す。初期状態では
ナイーブアルゴリズムに対する反例について再考する。HLC アルゴリズムを適用した場合のこの例を Figure 6 に示す。ノード 1, 2, 3 の間でループを継続すると、ノード 1, 2, 3 の
HLC アルゴリズムの正しさを証明するために、まずこのアルゴリズムが要件 1 を満たし、LC アルゴリズムとして使用できることを示す。これはアルゴリズム内で
定理 1. 任意の 2 つのイベント
と に対して、 である。∎
次に HLC が要件 4 を満たすことを示す。この要件は HLC 値が PT 値に近いことを要求するものである。アルゴリズムにおける
定理 2. 任意のイベント
に対して、 である。∎
定理 3.
は が認識している最大クロック値を表す。言い換えると、 である。
Proof. 我々は新しいイベントが生成されるときに帰納法でこれを証明する。初期状態では、この命題は自明に満たされる。新しいイベント
が送信イベントで が直前のイベントである場合、帰納法によって次が成り立つ。 さらに、HLC アルゴリズムより、 ならば である。また は真である。したがって次が成り立つ。
が受信イベントで が同じノード上の直前のイベント、 を受信したメッセージとする。 再び、
が真ならば は または に等しい。これらの各ケースの分析は前のケースと同様である。したがって次が成り立つ。 ∎
定理 3 を使用して
系 1. 任意のイベント
に対して、 である。
Proof. クロック同期制約により
最後に、要件 3 を証明するために HLC の
定理 4. 任意のイベント
に対して、
Proof. 我々は帰納法によってこの命題を証明する。これは初期状態において自明に成立する。さらに
送信イベントの生成において
定理4から、以下の二つの系が導かれる。
系 2. 任意のイベント
に対して、\(c.f \le |\{g:g \hb f \land l.g = l.f)\}| が成立する。
系 3. 任意のイベント
に対して、 が成立する。
Proof. 系 2 より、任意のイベント
上記の境界はほぼ最適に近い値であるが、合理的な小さな仮定を追加することで
ここで、ノード
系 4. 前述の仮定の下で、
は最大でも である。
3.4 HLCの特性
HLC アルゴリズムは任意の分散アーキテクチャ向けに設計されており、クライアント・サーバーモデルをはじめとする他の環境にも容易に適用可能である。
我々は意図的に HLC を NTP への重ね合わせとして実装する方式を採用した。言い換えれば、HLC は物理クロックの値を読み取るのみで更新は行わない。したがって、あるノードがより新しいタイムスタンプを持つメッセージを受信した場合、物理クロック自体を変更する代わりに、
- 3
4 HLCの障害耐性
4.1 自己安定化
本セクションでは HLC に自己安定化 [4] を実装し、障害耐性を実現する手法について議論する。これにより、HLC が任意の状態に摂動/破損した場合でも最終的に正当な状態へと回復できる。
HLC の安定化は NTP クロックに対する HLC の重ね合わせ特性に基づいている。HLC は NTP クロックを変更しないため、ノードの物理クロックが NTP の補正や同期に干渉することはない。物理クロック/NTP クロックが安定化すると、定理 2 と補題 3 と 2 の観測結果に基づいて HLC を補正できる。これらの結果により、
不良な HLC 値に起因する破損の拡散を抑制するため、我々は境界外のメッセージを拒否する規則を設けている。具体的には、
リセット補正処理と境界外メッセージ拒否処理のいずれも、ノードレベルでのローカルな補正動作であることに注意。HLC がこれらのいずれかの処理を実行した場合、問題のあるエントリを記録して検査用に保存するとともに、管理者に通知するための例外を発生させる。
4.2 同期誤差のマスク処理
HLC を一般的な NTP 同期誤差に対して耐性を持たせるため、我々は
このアプローチにより HLC は同期遅延ノード (stragglers)、つまり
5 実験
5.1 AWS 環境におけるデプロイ結果
実験には Amazon Web Services (AWS) の xlarge インスタンスを使用し、オペレーティングシステムとして Ubuntu 14.04 を採用した。各インスタンスは stratum 2 NTP サーバー 0.ubuntu.pool.ntp.org と同期設定されている。我々の基本設定では、すべてのインスタンスが TCP ソケットを介して相互に継続的にメッセージを送信し、別のスレッドで自分宛のメッセージを受信するようにプログラムした。送信されたメッセージの総数は 75,000 から 425,000 の範囲である。
同一 AWS リージョン内で基本設定 (全ノードが送信元かつ相互に送信を行う構成) を使用したところ次のの結果が得られた。値 "c" 各ノードの HLC の
| c | offset=5ms | offset=1.5ms |
|---|---|---|
| 0 | 83.90 % | 83.66 % |
| 1 | 12.12 % | 12.03 % |
| 2 | 3.37 % | 4.09 % |
| 3 | 0.24 % | 0.21 % |
4 ノード構成の実験結果から、
| c | offset=9ms | offset=3ms |
|---|---|---|
| 0 | 65.56 % | 91.18 % |
| 1 | 15.39 % | 8.82 % |
| 2 | 8.14 % | 0 % |
| 3 | 5.90 % | |
| 4 | 2.74 % | |
| 5 | 1.39 % | |
| 6 | 0.56 % | |
| 7 | 0.20 % | |
| 8 | 0.08 % | |
| 9 | 0.03 % |
8 ノードを使用した実験では NTP 同期の改善により
| c | offset=16ms | offset=6ms |
|---|---|---|
| 0 | 66.96 % | 75.43 % |
| 1 | 19.40 % | 18.51 % |
| 2 | 7.50 % | 3.83 % |
| 3 | 4.59 % | 1.84 % |
| 4 | 1.76 % | 0.32 % |
| 5 | 0.61 % | 0.06 % |
| 6 | 0.14 % | 0.01 % |
| 7 | 0.02 % |
16 ノードを使用した実験でも、すべてのノードがほぼ実線速度で相互通信を行っているにもかかわらず、極めて低い
WAN デプロイ結果. 我々は WAN 環境でも HLC テスト実験を実施した。具体的には、AWS の異なるリージョン (アイルランド、米国東海岸、米国西海岸、東京) にそれぞれ配置した 4 台の m1.xlarge インスタンスを使用した。我々の結果によると、NTP オフセットが 3ms の場合、
WAN 環境で
5.2 シミュレーションによるストレステストと障害耐性評価
HLC の耐障害性をさらに詳細に分析するために、我々はイベント発生率が非常に高い場合やクロック同期が大幅に劣化した場合など、HTC に負荷がかかるシナリオで評価を行った。我々のシミュレーションでは、イベント発生率が 1 ミリ秒あたり 1 イベント、クロックドリフトが 10ms から 100ms の範囲内で変動するケースを検討した。定理 2 で示された
これらのシミュレーションでは、クロックドリフトが
クロック同期が劣化した環境下における HLC の評価を行うため、システムに遅延同期ノードを追加した。このノードは常に他のノードよりも遅れて動作することで、クロックドリフトの制約を意図的に違反することが許可されている。我々は許容される境界のちょうど端に留まり、最大クロックとのクロックドリフト差が
われわれはまた過度に先行するノードを導入した実験も実施した。Figure 10 および Figure 11 にその結果を示す。これらの実験で観測された最大の
これらの実験結果から、遅延ノードは先行ノードよりもシステムの
6 議論
本セクションでは、分散データベースにおける一貫性のあるスナップショットを取得するための HLC の応用、
6.1 スナップショット
スナップショット読み取り操作において、クライアントは特定の時点におけるデータのスナップショットを取得することに興味がある。HLC を用いることで、TrueTime と同様のスナップショット読み取りを実現可能である。さらに重要な点として、TT とは異なり、クロック値の不確実性に起因する遅延をトランザクションに発生させる必要がない。
我々のアプローチをより簡単に説明するため仮想ダミーイベントの概念を導入する。同一ノード上の 2 つのイベント
仮想ダミーイベントの調整により時刻
Figure 12 に、時刻
6.2 と を用いたコンパクトなタイムスタンプ処理
NTP は 64 ビットのタイムスタンプを使用しており、これは 32 ビットの秒部分と 32 ビットの小数部分で構成される。(これにより
しかし HLC を単一の 64 ビットタイムスタンプとして表現するにはいくつかの課題がある。第一に、HLC アルゴリズムでは
我々は
このコンパクトな表現を使用してデータベースに保存するメッセージやデータ項目にタイムスタンプを付与する必要がある場合、我々は
6.3 その他の関連研究
Dynamo [23] はレプリカへの更新の因果関係追跡のためのバージョンベクトルとして VC を採用している。Cassandra はレプリカへの更新操作に PT と LWW ルールを使用している。
Spanner [2] はグローバル規模で分散トランザクションを順序付け、分散データベース全体でのスナップショット読み取りを容易にするために TT を採用している。
HLC はクロックの不確実性を待つ必要がない。これは、HLC の更新ルールを使用して不確実性区間内の因果関係を記録できるためである。HLC は外部一貫性を提供するためにも採用でき、トランザクション終了後にクライアント通知待機を導入することで、書き込み処理のスループットを制限しないようにできる。
イベントの順序付けに関する代替アプローチはイベント間に明示的な関係を確立することである。この手法は Kronos システム [5] で例示されており、関心のある各イベントは Kronos サービスに登録され、アプリケーションが因果関係の観点から関心のあるイベントを明示的に識別する。これにより、システム内のイベント依存関係グラフを検索する追加のコストが生じるものの、アプリケーション固有の因果関係を捉えることができる。LC/VC/PT/HLC では対照的に、あるノードが連続する 2 つのイベントを実行する場合、2 番目のイベントは 1 番目のイベントに因果的に依存すると仮定する。したがって、イベントの順序付けは純粋にイベントに割り当てられたタイムスタンプのみに基づいて決定される。
- 4実際には
だけでなく任意の に対してスナップショット読み取りを取得できる。
7 結論
本論文では、論理クロック (LC) の利点と物理時間 (PT) の利点を統合しつつ、それぞれの欠点を克服したハイブリッド論理クロック (HLC) を提案した。HLC は (一方向の) 因果関係情報が捕捉されることを保証するため LC の代替として使用できる。さらに HLC はノードに対して PT の可能なクロックドリフト範囲内の論理時刻を提供するため、PT を必要とするあらゆるアプリケーションで PT の代替として使用できる。HLC は厳密に単調増加性を有するため、NTP のよじれ (非単調な更新など) に耐性を持たせるためにアプリケーションで使用できる。
HLC は 64 ビットのメモリ空間で実装でき、NTP クロックと後方互換性もある。さらに HLC は NTP クロック値を読み取るだけで変更しないため、HLC を使用するアプリケーションが他の NTP 依存アプリケーションに影響を及ぼすことはない。
HLC は高い回復性を備えている。そのメモリ要件は理論解析によって厳密に規定されており、さらに我々の実験結果から厳密に制約されていることが明らかになっている。我々はこの特性を基盤として HLC に自己安定化障害耐性を設計する。
HLC は LC を精緻化したものであり、スナップショット読み取りのための一貫性スナップショットを取得するために使用できる。さらに、HLC と物理クロック間のドリフトは物理クロックのクロックドリフト量よりも小さいため、HLC で取得したスナップショットは特定の物理時刻におけるスナップショットとして十分に信頼できる選択肢となる。このため、HLC は特に他版分散データベースにおけるタイムスタンプ付与機構として特に有用である。例えば Spanner では TrueTime (TT) の代わりに使用でき、クロック同期不確実性ウィンドウ (clock synchronization uncertainty window) 内でイベントを遅延またはブロックする必要があるという TT の欠点の一つを克服できる。HLC は、アプリケーションイベントをアプリケーションが望む速度で生成することが可能となる。
References
- K. Bhatia, K. Marzullo, and L. Alvisi. Scalable causal message logging for wide-area environments. Concurrency and Computation: Practice and Experience, 15(10):873–889, 2003.
- J. Corbett, J. Dean, et al. Spanner: Google's globally-distributed database. Proceedings of OSDI, 2012.
- M. Demirbas and S. Kulkarni. Beyond truetime: Using augmentedtime for improving google spanner. LADIS '13: 7th Workshop on Large-Scale Distributed Systems and Middleware, 2013.
- E. W. Dijkstra. Self-stabilizing systems in spite of distributed control. Communications of the ACM, 17(11), 1974.
- R. Escriva, A. Dubey, B. Wong, and E.G. Sirer. Kronos: The design and implementation of an event ordering service. EuroSys, 2014.
- R. Fan and N. Lynch. Gradient clock synchronization. In PODC, pages 320–327, 2004.
- J. Fidge. Timestamps in message-passing systems that preserve the partial ordering. Proceedings of the 11th Australian Computer Science Conference, 10(1):56–66, Feb 1988.
- K. Kingsbury. The trouble with timestamps. http://aphyr.com/posts/299-the-trouble-with-timestamps.
- R. Kotla, L. Alvisi, M. Dahlin, A. Clement, and E. Wong. Zyzzyva: Speculative byzantine fault tolerance. SIGOPS Oper. Syst. Rev., 41(6):45–58, October 2007.
- S. Kulkarni and Ravikant. Stabilizing causal deterministic merge. J. High Speed Networks, 14(2):155–183, 2005.
- Avinash Lakshman and Prashant Malik. Cassandra: Structured storage system on a p2p network. In Proceedings of the 28th ACM Symposium on Principles of Distributed Computing, PODC '09, pages 5–5, 2009.
- L. Lamport. Time, clocks, and the ordering of events in a distributed system. Communications of the ACM, 21(7):558–565, July 1978.
- The future of leap seconds. http://www.ucolick.org/~sla/leapsecs/onlinebib.html.
- Another round of leapocalypse. http://www.itworld.com/security/288302/another-round-leapocalypse.
- C. Li, D. Porto, A. Clement, J. Gehrke, N. Preguica, and R. Rodrigues. Making geo-replicated systems fast as possible, consistent when necessary. OSDI, 2012.
- W. Lloyd, M. Freedman, M. Kaminsky, and D. Andersen. Don't settle for eventual: Scalable causal consistency for wide-area storage with cops. In SOSP, pages 401–416, 2011.
- M. Maroti, B. Kusy, G. Simon, and A. Ledeczi. The flooding time synchronization protocol. SenSys, 2004.
- A. Mashtizadeh, A. Bittau, Y. Huang, and D. Mazieres. Replication, history, and grafting in the ori file system. In SOSP, pages 151–166, 2013.
- F. Mattern. Virtual time and global states of distributed systems. Parallel and Distributed Algorithms, pages 215–226, 1989.
- D. Mills. A brief history of ntp time: Memoirs of an internet timekeeper. ACM SIGCOMM Computer Communication Review, 33(2):9–21, 2003.
- B. Sigelman, L. Barroso, M. Burrows, P. Stephenson, M. Plakal, D. Beaver, S. Jaspan, and C. Shanbhag. Dapper, a large-scale distributed systems tracing infrastructure. Technical report, Google, Inc., 2010.
- Y. Sovran, R. Power, M. Aguilera, and J. Li. Transactional storage for geo-replicated systems. In SOSP, pages 385–400, 2011.
- W. Vogels. Eventually consistent. Communications of the ACM, 52(1):40–44, 2009.
- Z. Wu, M. Butkiewicz, D. Perkins, E. Katz-Bassett, and H. Madhyastha. Spanstore: Cost-effective geo-replicated storage spanning multiple cloud services. In SOSP, pages 292–308, 2013.
- Y. Zhang, R. Power, S. Zhou, Y. Sovran, M. Aguilera, and J. Li. Transaction chains: Achieving serializability with low latency in geo-distributed storage systems. In SOSP, pages 276–291, 2013.
翻訳抄
分散システムにおける論理クロックと物理時刻の長所を統合したハイブリッド論理クロック (HLC) を提案し、因果関係追跡と物理時刻への近似を両立させながら、64 ビット NTP 形式での実装と一貫スナップショット取得を可能にした 2014 年の論文。
- KULKARNI, Sandeep S., DEMIRBAS, Murat, MADEPPA, Deepak, AVVA, Bharadwaj and LEONE, Marcelo. Logical Physical Clocks and Consistent Snapshots in Globally Distributed Databases. In: AGUILERA, Marcos K., QUERZONI, Leonardo and SHAPIRO, Marc (eds.). Principles of Distributed Systems: 18th International Conference, OPODIS 2014, Cortina d'Ampezzo, Italy, December 16-19, 2014. Proceedings. Cham: Springer International Publishing, 2014, pp. 17-32. Lecture Notes in Computer Science, vol. 8878. ISBN 978-3-319-14472-6. Available from: https://doi.org/10.1007/978-3-319-14472-6_2




