Eric Herman > Algorithm-ConsistentHash-CHash-0.02 > Algorithm::ConsistentHash::CHash

Download:
Algorithm-ConsistentHash-CHash-0.02.tar.gz

Dependencies

Annotate this POD

View/Report Bugs
Module Version: 0.02   Source  

NAME ^

Algorithm::ConsistentHash::CHash - XS bindings to bundled Consistent Hash library

SYNOPSIS ^

    my $ch = Algorithm::ConsistentHash::CHash->new(
        ids      => [ 'server1', 'server2' ],
        replicas => 100,
    );

    my $node = $ch->lookup('foo');
    # $node is either server1 or server2, consistently

DESCRIPTION ^

Consistent Hashing allows to spread data out across multiple IDs, ensuring relatively-even distribution using replicas. The more replicas, the better distribution (but lower performance).

Given a consistent hash, adding a node to the hash only requires reassigning a minimal number of keys.

A C implementation of the Consistent Hash algorithm is bundled in this package, along with the XS bindings to it. This might change in the future.

METHODS ^

new

    my $ch = Algorithm::ConsistentHash::CHash->new(
        ids      => [ @nodes_names ],
        replicas => $number_of_replicas,
    );

Create a new Algorithm::ConsistentHash::CHash object. This internally generates a new hash.

lookup

    my $node_name = $ch->lookup($key);

Looks up a node in the hash by the given key.

SEE ALSO ^

https://github.com/dgryski/libchash - The bundled C library.

Hash::ConsistentHash - Contains the entire logics in the XS, leading to it not being easily usable in other languages, and having a more complicated, alebit sophisticated, interface.

Set::ConsistentHash - Pure-Perl implementation.

AUTHORS ^

syntax highlighting: