chxj1992/hashring

使用相同算法(如libketama)实现的php中的一致性哈希“hashring”实现

安装次数: 64 106

依赖关系: 0

建议者: 0

安全: 0

星标: 6

关注者: 3

分支: 2

开放问题: 1

类型:项目

v1.0.1 2017-02-19 16:17 UTC

This package is not auto-updated.

Last update: 2024-09-26 00:11:40 UTC


README

WTFPL

实现了在服务器节点数量可以增加或减少时使用的一致性哈希(如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");