分散システム7 件の記事

分散システム の記事

分散トランザクション入門 - 2相コミットが詰まる理由と Saga パターンの使いどころ

分散トランザクション入門 - 2相コミットが詰まる理由と Saga パターンの使いどころ

59

複数のデータベースやサービスにまたがる更新を、どうやって「全部やるか、全部やらないか」にするのか。原子的コミット問題から出発して、2相コミットの手順とコーディネータ障害によるブロッキング、3相コミットが実用されない理由、X/Open XA仕様のヒューリスティック決定、PostgreSQLのPREPARE TRANSACTIONの実演、Garcia-MolinaとSalemの1987年Sagas論文に基づく補償トランザクション、コレオグラフィとオーケストレーションの違い、二重書き込みとアウトボックスパターン、冪等性とexactly-onceの現実、TCC、PercolatorとSpannerの合意ベースのアプローチまでを、実際に動かして出力を確認したコードとともに整理します。

Raft合意アルゴリズム入門 - リーダー選出とログ複製を実装で理解する

Raft合意アルゴリズム入門 - リーダー選出とログ複製を実装で理解する

35

分散合意アルゴリズムRaftを、OngaroとOusterhoutの原論文を一次ソースに整理します。単一障害点を消すための状態機械複製という出発点、Paxosの難解さに対して理解しやすさを設計目標に据えた経緯、Follower・Candidate・Leaderの3状態とtermという論理時計、election timeoutのランダム化がsplit voteを解消する仕組み、AppendEntriesとcommitIndex、Log Matching PropertyとElection Restriction、2f+1台でf台の故障に耐えるクォーラムの算術、joint consensusとスナップショット、etcd・Consul・TiKV・CockroachDBでの実装、そしてReadIndexとlease readまで、実際に動かして出力を確認したPythonシミュレータで解説します。

レジリエンス設計パターン 入門 - タイムアウト・リトライ・指数バックオフ・サーキットブレーカー

レジリエンス設計パターン 入門 - タイムアウト・リトライ・指数バックオフ・サーキットブレーカー

17

ネットワーク越しの呼び出しは必ず失敗しうる、という前提でクライアント側が下流の障害から自分を守る古典的パターンを整理します。タイムアウトとデッドライン伝播、冪等性とリトライ、指数バックオフ+ジッター(full/equal jitter)、サーキットブレーカーの3状態、バルクヘッド、フォールバックまで、Release It! や AWS・Martin Fowler の出典に沿って擬似コードと状態遷移図つきで解説します。

CAP定理とは - 分散システムで一貫性と可用性のどちらを守るか(PACELCまで整理)

CAP定理とは - 分散システムで一貫性と可用性のどちらを守るか(PACELCまで整理)

18

CAP定理を一次ソースから整理します。CのC=線形化可能性という定義、ACIDのCとの違い、「3つから2つを選ぶ」という有名な誤解の正体、分断時にCP/APのどちらを選ぶかという実像、Brewerの2012年再考、通常時のレイテンシと一貫性を扱うPACELC定理、結果整合性とBASE、そしてetcd・Cassandra・MongoDB・DynamoDBの分類を留保付きで解説します。

コンシステントハッシュ法とは - 分散システムでノードを増減してもキャッシュが崩れない仕組み

コンシステントハッシュ法とは - 分散システムでノードを増減してもキャッシュが崩れない仕組み

14

コンシステントハッシュ法(Consistent Hashing)を基礎から解説します。単純な mod N ハッシュがノード数変更でほぼ全キー再配置になる問題、ハッシュリングと時計回り割り当て、仮想ノードによる負荷平準化、再配置がなぜ平均 K/N で済むのか、そして Jump Consistent Hash・Rendezvous(HRW)・Maglev といった発展、DynamoDB/Cassandra/memcached(ketama) での実運用まで、原論文を一次ソースに整理します。

UUID と ULID 入門 - 分散システムで衝突しない ID を、時系列に強く設計する

UUID と ULID 入門 - 分散システムで衝突しない ID を、時系列に強く設計する

14

分散システムの一意な ID 設計を、UUID と ULID を軸に整理します。RFC 9562(2024 年発行)が標準化した UUIDv7、UUIDv4 のランダム性が DB インデックスに与える影響、ULID の 128 ビット構成と時系列ソート、生成コード例、そしてタイムスタンプ露出などのセキュリティ注意点まで、一次ソースを裏取りしてまとめます。