Consistent hashing

Post on 07-Jul-2015

293 views 0 download

description

Consistent hashing

Transcript of Consistent hashing

Consistent Hashing

自己紹介

• 韓国人

• 江東区住み。生まれ&育ちは韓国大邱(テグ)。Notソウル

• 83年生まれ

• 同年代の普通の日本人に比べて業界経験は短い

• 日本に来たのは2010年

• ソシャゲー業界は2011年後半から

• フェースブック:https://www.facebook.com/jaeseop.jeong

• 良く聞かれる質問

①日本語はどうやって勉強したの?

→普通に勉強したよ。テキスト、日本語の授業、資格の勉強。日本のドラマをよく見てた。日本に来てからほとんど見てない。ワンピースは欠かさずに見ている

②実際の銃、撃ったことあるの?

→あるよ。パンパンしました

Consistent Hashingって何?

Consistent Hashingって何?

• スロットの追加や削除に対して、最小限のキーのスロットへのマッピングの変更で、ハッシュテーブルの機能を提供することのできる特殊なハッシュ法。その他多くのハッシュテーブルでは、スロット数の変化はほぼすべてのキーが再マッピングされるのに対して、コンシステントハッシュの場合、K をキーの数、n をスロット数とすると、平均 K / n 個のキーの再

マップですむ。分散システムの一形態である分散キャッシュなどで利用されている。

誰が考案したの?

• MITでの分散キャッシュで使用するために、Karger氏によって考案された。

• 1997年の学術論文で、リクエストを分散する手段としてWebサーバーの数を変化させる手法として、"consistent hashing" という言葉が導入された。

2回目のリクエストは同じサーバーに向かないといけない 他のサーバーに向く場合は費用がかかってしまう

10000回のリクエストが再配置される ↓

K/Nのリクエストが再配置される

お馴染みのMemcachedで考えてみよう

Ringがある…

サーバーの追加

Keyは時計が回る方向で近いサーバーに配置される n < Key <= (n + 1)

A < 1 <= B

Bサーバーを撤去した

1のみ再配置される 5、2、4、3はそのまま

Bサーバーの復活 1はこれからBサーバーに配置される

気を付けてほしいのがあるよ

先ほどのサーバー状況

再びBサーバーを撤去したら?

疑問1

Cサーバーを撤去したらどうなるの?

予想図

仮想ノードがある サーバー10台の場合は、仮想ノードを100~200にするのが理想的

使用事例

• Memcached

http://gihyo.jp/dev/feature/01/memcached/0004?page=3

• AmazonのDynamoDB

http://aws.amazon.com/jp/dynamodb/

• DHT(Distributed Hash Table、分散ハッシュテーブル)

http://ja.wikipedia.org/wiki/%E5%88%86%E6%95%A3%E3%83%8F%E3%83%83%E3%82%B7%E3%83%A5%E3%83%86%E3%83%BC%E3%83%96%E3%83%AB

• BitTorrent

http://niallohiggins.com/2007/12/24/bittorrent-distributed-hash-table-dht-or-trackerless-bittorrent-i/

参考資料

https://charsyam.wordpress.com/2011/11/25/memcached-%EC%97%90%EC%84%9C%EC%9D%98-consistent-hashing

ご清聴ありがとうございます