More Related Content Similar to スケーラビリティと耐障害性を両立するWeb アプリケーション Similar to スケーラビリティと耐障害性を両立するWeb アプリケーション (20) スケーラビリティと耐障害性を両立するWeb アプリケーション3. 3
低レイテンシーの重要性
• Amazon 社
• 1秒の遅延で 7% が離脱、11% の page views が失われる
• 100ms の遅延減少で 1% 売り上げ増大、Amazon では合計で年
$480M 増加
• Microsoft 社
• 2秒の遅延でユーザ当たりの売り上げ -4.3%
• Google 社
• 検索結果ページを10から30項目にすると、ロード時間が 400ms
から 900ms となり、25% が離脱
4. 4
Web のスケールアウトでの耐障害性
• セッション状態の複製の課
題: 一貫性の保証
• NoSQL、RDB に永続化?
• その他の課題:
• グループメンバーの障害監視
• 状態の排他制御
• Master/slave での master
の障害、フェイルオーバー
Web
Servers
Database
Servers
Memcached
Servers
Shard
(G-O)
Shard
(P-Z)
Shard
(A-F)
Read Only
Slaves
5. 5
ZooKeeper
• Apache プロジェクト
• HDFS、Hbase、Hadoop ...
• 分散合意プロトコル
• リーダーの選出
• グループメンバーシップ
• 共有ロック
• 分散キュー、バリアー、...
• プロトコルをデータモデルと
API で提供
• 分散合意プロトコルの機構は知
らなくていい
6. 6
ZooKeeper プログラミングモデル
• API
• 死活監視(Ephemeral Node)
• 逐次化(Sequence Node)
• 変更通知(Watch)
• Recipe と Apache Curator
ライブラリー
• http://curator.incubator.apac
he.org/index.html
8. 8
Hadoop のアーキテクチャー
datanode daemon
Linux file system
…
tasktracker
slave node
datanode daemon
Linux file system
…
tasktracker
slave node
datanode daemon
Linux file system
…
tasktracker
slave node
namenode
namenode
daemon
job submission node
jobtracker
9. 9
地球規模の広域分散システム
• 次世代の大規模 Web サービスの方向性
• ハイブリッドクラウドの進展
• Geo-replication の課題とは?
• 可用性のための複製とその一貫性の両立
• ネットワークの障害、遅延
• いわゆる CAP 定理の克服
• Consistency: すべてのクライアントは変更があって
も同一のビューを見る
• Availability: すべてのクライアントは障害が発生して
も、データのいくつかの複製を発見することができる
• Partition-tolerance: (分散)システムはネット
ワークが切断されても、その特性を維持する
10. 10
Web サービス操作の特徴
• CRUD Read/Write 操作の4種類の組み合わせ
• Write-Write:
• Write-Read:
• Read-Read:
• Read-Write:
• 多くの NoSQL で採用される Eventual consistency
• セッションから Causal consistency へ
11. 11
広域分散システムの複製の一貫性モデル
• Causality(因果関係) とは
• Causal consistency では不可能な一貫性の制約
• トランザクショナルな操作: 銀行送金、注文と決済など
• 参照整合性、ユニーク性などの integrity constraints
Causal consistency の保証 現在のセッションの操作 新たなセッションの操作
Read Your Writes Write Read
Monotonic Reads Read Read
Writes Follow Reads Read Write
Monotonic Writes Write Write
12. 12
ソーシャルにおける相互作用の例
ユーザ 操作 操作の説明
A さん w1 プラン1の挿入
B さん r2 A さんのプラン1の読み取り
B さん w3 プラン2の挿入
A さん r4 B さんのプラン2の読み取り
C さん w5 プラン3の挿入
A さん w6 プラン1の修正を挿入
A さん r7 C さんのプラン3の読み取り
A さん w8 C さんのプラン3を参考にプラン1を修正
13. 13
Causal 依存関係の表現
操作 依存関係
w1 -
w3 w1
w5 -
w6 w3 w1
w8 w6 w5 w3 w1
論
理
時
間
C さんB さんA さん
ポイント:
• Web クライアントが Write トランザクションに
causal 依存関係を含ませる
• スレッドやリプライ数は高々 100 程度
16. 16
参考文献
「分散システム ~ 概念とアーキテクチャー」(仮称)
• CAP 定理
• 合意問題
• アトミックブロードキャスト
• ZooKeeper
• クォーラムシステム
• 複製でのトランザクション(OLTP とメッセージングの融合)
• Snapshot isolation による複製の問題
• レプリケーションシステムの実装法
• Paxos
• Byzantine 障害対応合意プロトコル
• 複製を隠ぺいする仮想リソース管理
• レプリケーションの安全性評価方法
• システム設計の原則
RM0
Commit
Leader
RM0…N
Acceptors
0…2F