chxj1992 / hashring
使用相同算法(如libketama)实现的php中的一致性哈希“hashring”实现
v1.0.1
2017-02-19 16:17 UTC
Requires
- php: >=5.4.0
Requires (Dev)
- phpunit/phpunit: ~4.0
This package is not auto-updated.
Last update: 2024-09-26 00:11:40 UTC
README
实现了在服务器节点数量可以增加或减少时使用的一致性哈希(如memcached)。哈希环使用与libketama相同的算法构建。
灵感来源于一个golang hashring库 serialx/hashring。
使用方法
安装:
composer require chxj1992/hashring:~1.0
基本示例用法:
$memcacheServers = ["192.168.0.246:11212", "192.168.0.247:11212", "192.168.0.249:11212"]; $hashRing = new \Chxj1992\HashRing\HashRing($memcacheServers); $server = $ring->getNode("my_key");
使用权重示例:
$weights = ["192.168.0.246:11212" => 1, "192.168.0.247:11212" => 2, "192.168.0.249:11212" => 1]; $hashRing = new \Chxj1992\HashRing\HashRing($weights); $server = $hashRing->getNode("my_key");
添加和删除节点示例:
$memcacheServers = ["192.168.0.246:11212", "192.168.0.247:11212", "192.168.0.249:11212"]; $hashRing = new \Chxj1992\HashRing\HashRing($memcacheServers); $hashRing = $hashRing->removeNode("192.168.0.246:11212"); $hashRing = $hashRing->addNode("192.168.0.250:11212"); $server = $hashRing->getNode("my_key");