[戻る]

Java読書会BOF「データ指向アプリケーションデザイン」を読む会 第7回

開催概要

日時

2021年4月24日 10:00 - 17:00

場所

てくのかわさき 第4研修室

出席者(敬称略)

松永、平山、岩室、加藤、遠藤、高橋(智)、高橋(徹)

  • 本日は、p.369 9.2.4.2から読書開始です。

9章 一貫性と合意

9.2 線形化可能性

9.2.4 線形化可能性にすることによるコスト

9.2.4.2 線形化可能性とネットワークの遅延

9.3 順序の保証

9.3.1 順序と因果関係

  • 【誤植】p.372 上13行目 「Blob」→「Bob」

9.3.1.1 因果律に基づく順序と全順序の違い
9.3.1.2 因果律の一貫性よりも強い線形化可能性
9.3.1.3 因果律における依存関係の補足

9.3.2 シーケンス番号の順序

  • UUID は衝突しないの?

    • 乱数で生成するUUID(バージョン4 バリアント1)は、122bitの乱数

      次のブログによると、 \(3 * 10^{17}\) 個のUUIDを生成した後に、UUIDを1つ生成するとその衝突確率は1%となる。

https://kiririmode.hatenablog.jp/entry/20140513/p1

9.3.2.1 因果的ではないシーケンス番号生成器
9.3.2.2 ランポートタイムスタンプ
9.3.2.3 タイムスタンプによる順序づけでは不十分

9.3.3 全順序のブロードキャスト

  • p.380 上12行目 「すべての操作をリーダー上の単一のCPUコアで並べることによって」

    • これは、マルチコア計算機においては、特定のCPUコアに割り当てる (Affinity)必要がある?

    • OSのスケジューリングで異なるCPUコアに割り当ては許容される?

9.3.3.1 全順序ブロードキャストの利用
9.3.3.2 全順序ブロードキャストを利用した線形化可能なストレージの実装
9.3.3.3 線形化可能なストレージを使った全順序ブロードキャストの実装

9.4 分散トランザクションと合意

9.4.1 アトミックなコミットと2相コミット(2PC)

9.4.1.1 単一ノードから分散アトミックコミットへ
9.4.1.2 2相コミット
9.4.1.3 約束のシステム
  • 2相コミットで2フェーズ目にコケた場合、どうなるの?

    • 【宿題】実際に試してみよう。

9.4.1.4 コーディネータの障害
9.4.1.5 スリーフェーズコミット

9.4.2 分散トランザクションの実際

9.4.2.1 exactly-onceなメッセージ処理
9.4.2.2 XAトランザクション
9.4.2.3 未確定状態のロックの保持
9.4.2.4 コーディネータの障害からのリカバリ
9.4.2.5 分散トランザクションの限界
  • 「最小公分母」とは?

    原書では"lowest common denominator"、通分するときの共通の分母、例えば、 \(\frac{1}{2}\)\(\frac{1}{3}\) の最小公分母は6

9.4.3 耐障害性を持つ合意

  • 【誤植】p.398 下4行目 「deside」→「decide」

9.4.3.1 合意アルゴリズムと全順序ブロードキャスト
9.4.3.2 シングルリーダーレプリケーションと合意
9.4.3.3 エポック番号とクオラム
9.4.3.4 合意の限界

9.4.4 メンバーシップと強調

9.4.4.1 ノードへの処理の割り当て
9.4.4.2 サービスディスカバリ
9.4.4.3 メンバーシップサービス

まとめ

10章 バッチ処理

10.1 Unixのツールによるバッチ処理

10.1.1 単純なログの分析

10.1.1.1 コマンドの連鎖とカスタムのプログラム
10.1.1.2 ソートとインメモリ集計
  • p.432 GNUのsortユーティリティは、メモリを越えるデータをディスクに書 き出し、さらに複数CPUコアがあれば並列化するとは!

10.1.2 Unixの哲学

  • Windows上でUnix環境使っている?

    • cygwin

    • Msys

    • WSL

本日は、p.433 の 10.1.2 まで読みました。 次回は、p.433 の 10.1.2.1 からです。

[戻る]