consistent hashing

27
Consistent Hashing

Upload: jaeseop-jeong

Post on 07-Jul-2015

292 views

Category:

Engineering


0 download

DESCRIPTION

Consistent hashing

TRANSCRIPT

Page 1: Consistent hashing

Consistent Hashing

Page 2: Consistent hashing

自己紹介

• 韓国人

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

• 83年生まれ

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

• 日本に来たのは2010年

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

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

• 良く聞かれる質問

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

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

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

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

Page 3: Consistent hashing

Consistent Hashingって何?

Page 4: Consistent hashing

Consistent Hashingって何?

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

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

Page 5: Consistent hashing
Page 6: Consistent hashing

誰が考案したの?

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

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

Page 7: Consistent hashing

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

Page 8: Consistent hashing

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

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

Page 9: Consistent hashing

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

Page 10: Consistent hashing

Ringがある…

Page 11: Consistent hashing

サーバーの追加

Page 12: Consistent hashing

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

A < 1 <= B

Page 13: Consistent hashing
Page 14: Consistent hashing
Page 15: Consistent hashing

Bサーバーを撤去した

Page 16: Consistent hashing

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

Page 17: Consistent hashing

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

Page 18: Consistent hashing

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

Page 19: Consistent hashing

先ほどのサーバー状況

Page 20: Consistent hashing

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

Page 21: Consistent hashing

疑問1

Page 22: Consistent hashing

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

Page 23: Consistent hashing

予想図

Page 24: Consistent hashing

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

Page 25: Consistent hashing

使用事例

• 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/

Page 26: Consistent hashing

参考資料

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

Page 27: Consistent hashing

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