jspeedz/php-consistent-hashing

PHP的多探针一致性哈希实现

1.0.7 2024-07-17 05:52 UTC

This package is auto-updated.

Last update: 2024-09-17 06:07:05 UTC


README

多探针一致性哈希,使用PHP实现

该包的核心理念是您可以以一致/粘性的方式将键分布到节点中,同时也可以为每个节点设置自定义权重。这允许您使用相等或不等的分布将'流量'路由到节点。

该算法的分布应该比例如libketama更加均匀,libketama在等权重分布之间的偏差可以达到大约10%。有关此算法和一致性哈希的一般信息,请参阅

用例

  • 负载均衡分布式缓存。
  • 数据分区。
  • 选择特定的服务器并保持连接(一致性路由)。
  • 将用户分布到多个组中。例如,用于A/B测试。

示例用法

$hasher = new \Jspeedz\PhpConsistentHashing\MultiProbeConsistentHash();
// Choose which hash functions to use
$hasher->setHashFunctions((new \Jspeedz\PhpConsistentHashing\HashFunctions\Standard)());

使用相等权重

$hasher->addNode('node1');
$hasher->addNode('node2');
$hasher->addNode('node2');

$node = $hasher->hash('some_key1');

使用自定义权重(我喜欢使用百分比)

$hasher->addNode('node1', 25);
$hasher->addNode('node2', 33.3);
$hasher->addNode('node2', 41.7);

$node = $hasher->hash('some_key1');

注意:如果您添加节点时未指定权重,则权重将设置为1。