NAME
MooseX::ConsistentHash - unified consistent hashing interface Version 0.01
SYNOPSIS
some examples
use MooseX::ConsistentHash;
my $hashing = MooseX::ConsistentHash->new();
-- or --
my $hashing = MooseX::ConsistentHash->new(
class => 'MooseX::ConsistentHash::AlgorithmConsistentHashKetama'
);
-- or --
use Digest::JHash qw();
my $hashing = MooseX::ConsistentHash->new(
class => 'MooseX::ConsistentHash::SetConsistentHash',
init_hash => {hash_func => \&Digest::JHash::jhash}
);
-- or --
my $hashing = MooseX::ConsistentHash->new(
class => 'MooseX::ConsistentHash::SetConsistentHash'
);
$hashing->add_options(
{option => 'foo1', weight => 1},
{option => 'foo2', weight => 2}
);
my $some = Some->new();
$hashing->add_option(option => $some, weight => 10);
my $result_option = $hashing->get_option('some_string');
# $result_option may be 'foo1' or 'foo2' or $some
DESCRIPTION
MooseX::ConsistentHash provides a unified consistent hashing API. By default, this module can work with Algorithm::ConsistentHash::Ketama,Set::ConsistentHash and any of your module for consistent hashing.
METHODS
new
It takes two parameters:
class - name class for consistent hashing. The class must support the role of MooseX::ConsistentHash::RoleInterface. By default class is MooseX::ConsistentHash::AlgorithmConsistentHashKetama
init_hash - optional hashref argument. He will be transferred to a constructor consistent hashing class.
add_option(option => $some, weight => $integer_weight)
This method added option to the consistent hashing instance through MooseX::ConsistentHash::Option object. Return identificator option or undef.
add_options({option => $some, weight => $integer_weight},...)
Some sugar. Return list identificators options.
new_weight($identificator, $new_weight)
change weight for current identificator. retuns true if succeful.
clear_options
remove all options and reinint instance consistent hashing. retuns true if succeful.
clear_option($identificator)
remove one option. retuns true if succeful.
show_options
return hashref all options (keys are identificators)
get_option($key)
select the option in the set to which that key is mapped and returns value.
PROBLEMS
MooseX::ConsistentHash with MooseX::ConsistentHash::AlgorithmConsistentHashKetama or MooseX::ConsistentHash::SetConsistentHash slower by 80% than the original module Algorithm::ConsistentHash::Ketama or Set::ConsistentHash.
SEE ALSO
MooseX::ConsistentHash::RoleInterface, MooseX::ConsistentHash::Option
MooseX::ConsistentHash::AlgorithmConsistentHashKetama, Algorithm::ConsistentHash::Ketama
MooseX::ConsistentHash::SetConsistentHash, Set::ConsistentHash
AUTHOR
Sivirinov Ivan, <catamoose at yandex.ru>
COPYRIGHT AND LICENSE
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.10 or, at your option, any later version of Perl 5 you may have available.
And see Algorithm::ConsistentHash::Ketama, Set::ConsistentHash.