スケーラビリティと耐障害性を両立するWeb アプリケーション

3,759 views

Published on

Published in: Technology, Art & Photos
0 Comments
13 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total views
3,759
On SlideShare
0
From Embeds
0
Number of Embeds
623
Actions
Shares
0
Downloads
0
Comments
0
Likes
13
Embeds 0
No embeds

No notes for slide

スケーラビリティと耐障害性を両立するWeb アプリケーション

  1. 1. スケーラビリティと耐障害性を両立するWeb アプリケーション日本マイクロソフト株式会社アーキテクト萩原正義@masayh
  2. 2. 2セッションのゴール• 分散システムで耐障害性とスケーラビリティを両立にはどうすべきか?• 現在の(閉域の)分散システム• Web サイト、Hadoop、NoSQL• 地球規模の広域分散システム
  3. 3. 3低レイテンシーの重要性• Amazon 社• 1秒の遅延で 7% が離脱、11% の page views が失われる• 100ms の遅延減少で 1% 売り上げ増大、Amazon では合計で年$480M 増加• Microsoft 社• 2秒の遅延でユーザ当たりの売り上げ -4.3%• Google 社• 検索結果ページを10から30項目にすると、ロード時間が 400msから 900ms となり、25% が離脱
  4. 4. 4Web のスケールアウトでの耐障害性• セッション状態の複製の課題: 一貫性の保証• NoSQL、RDB に永続化?• その他の課題:• グループメンバーの障害監視• 状態の排他制御• Master/slave での masterの障害、フェイルオーバーWebServersDatabaseServersMemcachedServersShard(G-O)Shard(P-Z)Shard(A-F)Read OnlySlaves
  5. 5. 5ZooKeeper• Apache プロジェクト• HDFS、Hbase、Hadoop ...• 分散合意プロトコル• リーダーの選出• グループメンバーシップ• 共有ロック• 分散キュー、バリアー、...• プロトコルをデータモデルとAPI で提供• 分散合意プロトコルの機構は知らなくていい
  6. 6. 6ZooKeeper プログラミングモデル• API• 死活監視(Ephemeral Node)• 逐次化(Sequence Node)• 変更通知(Watch)• Recipe と Apache Curatorライブラリー• http://curator.incubator.apache.org/index.html
  7. 7. 7分散システムの耐障害性の保証
  8. 8. 8Hadoop のアーキテクチャーdatanode daemonLinux file system…tasktrackerslave nodedatanode daemonLinux file system…tasktrackerslave nodedatanode daemonLinux file system…tasktrackerslave nodenamenodenamenodedaemonjob submission nodejobtracker
  9. 9. 9地球規模の広域分散システム• 次世代の大規模 Web サービスの方向性• ハイブリッドクラウドの進展• Geo-replication の課題とは?• 可用性のための複製とその一貫性の両立• ネットワークの障害、遅延• いわゆる CAP 定理の克服• Consistency: すべてのクライアントは変更があっても同一のビューを見る• Availability: すべてのクライアントは障害が発生しても、データのいくつかの複製を発見することができる• Partition-tolerance: (分散)システムはネットワークが切断されても、その特性を維持する
  10. 10. 10Web サービス操作の特徴• CRUD  Read/Write 操作の4種類の組み合わせ• Write-Write:• Write-Read:• Read-Read:• Read-Write:• 多くの NoSQL で採用される Eventual consistency• セッションから Causal consistency へ
  11. 11. 11広域分散システムの複製の一貫性モデル• Causality(因果関係) とは• Causal consistency では不可能な一貫性の制約• トランザクショナルな操作: 銀行送金、注文と決済など• 参照整合性、ユニーク性などの integrity constraintsCausal consistency の保証 現在のセッションの操作 新たなセッションの操作Read Your Writes Write ReadMonotonic Reads Read ReadWrites Follow Reads Read WriteMonotonic Writes Write Write
  12. 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. 13Causal 依存関係の表現操作 依存関係w1 -w3 w1w5 -w6 w3 w1w8 w6 w5 w3 w1論理時間C さんB さんA さんポイント:• Web クライアントが Write トランザクションにcausal 依存関係を含ませる• スレッドやリプライ数は高々 100 程度
  14. 14. 14Causal 依存関係の読み取りトランザクションCausal 依存関係にある write を複製データに反映させるには広域データの配置による遅延を考慮しなければならないCausal 依存関係にあるすべてのデータの Write が読み取り時のタイミングと重なるか
  15. 15. 15まとめ• 低レイテンシーと可用性のサービス提供での重要性• 複製は可用性と性能を高める• 閉域の分散システムでの耐障害性技術• ZooKeeper、Paxos、Vector clock など選択肢は多い• 今後は広域の分散システムでの耐障害性• Google 社の Megastore、Spanner• Paxos の改良版、Causality を利用した新しいトランザクションモデル(+ broadcast プロトコル)
  16. 16. 16参考文献「分散システム ~ 概念とアーキテクチャー」(仮称)• CAP 定理• 合意問題• アトミックブロードキャスト• ZooKeeper• クォーラムシステム• 複製でのトランザクション(OLTP とメッセージングの融合)• Snapshot isolation による複製の問題• レプリケーションシステムの実装法• Paxos• Byzantine 障害対応合意プロトコル• 複製を隠ぺいする仮想リソース管理• レプリケーションの安全性評価方法• システム設計の原則RM0CommitLeaderRM0…NAcceptors0…2F

×