runner/consistent-hash

v1.1.2 2018-07-13 05:03 UTC

This package is auto-updated.

Last update: 2024-08-28 23:07:01 UTC


README

一致性哈希分表

借鉴

权重的实现方法是借鉴的,其他地方也多多少少借鉴了一些。较大的区别在于,我把环形空间上的每个节点,无论是节点本身还是虚拟节点,都视为虚拟节点,并记录虚拟节点与真实节点的映射关系。因此,最终计算出来的,只能有一个目标节点。

总的来说,对这个东西还是一知半解,试试看吧。

使用

<?php

use Runner\ConsistentHash\ConsistentHash;

$hash = new ConsistentHash(
    [
            [
                'node' => 'node_1',
            ],
            [
                'node' => 'node_2',
                'weight' => 2,
            ],
            [
                'node' => 'node_3',
                'weight' => 3,
            ],
            [
                'node' => 'node_4',
                'weight' => 4,
            ],
            [
                'node' => 'node_5',
                'weight' => 5,
            ],
    ],
    'md5'
);

$node = $hash->lookup('RUNNERLEER');

待办事项

还不知道这个权重的实现方法是否可靠

参考

https://github.com/pda/flexihash

http://blog.codinglabs.org/articles/consistent-hashing.html