PHPでConsistentHashingの実装をしてみたので公開。
ConsistentHashingのわかりやすい説明とかメリットは以下のページが詳しかった。
PHPで実装するにあたり、ActionScriptで実装した方がいらっしゃったので、非常に参考にさせてもらった。
コードは以下。
検証用のプログラムを作成してちゃんと分散できているか確認してみた。
https://gist.github.com/4460171
ノード1~4に分散させたとき、各ノードに割り当てられる個数
node1:2670
node2:2227
node3:2259
node4:2844
ノード1~4に5を加えたときに元のノードに割り当てられる割合
node diff:1:80.15%
単なる剰余のときの上記の割合
(remainder)node diff:1:20%
ということで、ConsistentHashingのほうが圧倒的に高いヒット率を維持できるっぽいです。