ikemonn's blog

技術ネタをちょこちょこと

Dynamo - Cloud Computing & Big Data Group Discussion を読んだ

Dynamo: Amazon’s Highly Available Key-value Store を読んだのでメモ

メモのフォーマットは下記を参考にした。

どんなもの?

  • Dynamoは可用性とスケーラビリティのあるkey-value storage
    • primary keyアクセスでかつ1Mより小さいデータを扱うものをターゲットにしている
    • always writable
    • responseの99.9percentileが300ms以内(500req/sec)

先行研究とくらべて何がすごい?

  • 既存の技術の組み合わせで可用性とスケーラビリティのあるプロダクトを実装し本番で利用していること

技術や手法の肝は?

  • consistent-hashingでパーティションレプリケーションを行っている
  • gossipベースのfailure detection/membership protocol
  • weak-consistency(eventual consistency)によってパフォーマンス/スケーラビリティの向上
  • objectはversioningされてconsistencyを担保している
  • sloppy quoramとhinted hand offにより、nodeやネットワークの障害時でも可用性を担保
  • anti-entropyによりレプリカの同期を行う

どうやって有効と検証した?

  • 2006年12月のある日の12時間分のレスポンスタイムで検証
    • 99.9%は200ms以下でレスポンスが返ってきていた

議論はある?

  • eventual consistencyを用いているので、導入する際には対象のアプリケーションがweak consistencyでも大丈夫か検討する
  • nodeが増えれば増えるほど(数千nodeくらい)routing tableが大きくなって、routingのコストがかかってしまう

次に読むべき論文は?

Bigtable: A Distributed Storage System for Structured Data