consistent hashing
DESCRIPTION
Consistent hashingTRANSCRIPT
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
ご清聴ありがとうございます