jspeedz / php-consistent-hashing
PHP的多探针一致性哈希实现
1.0.7
2024-07-17 05:52 UTC
Requires
- php: >=8.2
Requires (Dev)
- phpstan/phpstan: ^1.11
- phpunit/phpunit: ^11.2
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。