Package net.spy.memcached
Class KetamaNodeLocator
java.lang.Object
net.spy.memcached.compat.SpyObject
net.spy.memcached.KetamaNodeLocator
- All Implemented Interfaces:
NodeLocator
This is an implementation of the Ketama consistent hash strategy from
last.fm. This implementation may not be compatible with libketama as hashing
is considered separate from node location.
Note that this implementation does not currently supported weighted nodes.
- See Also:
-
Constructor Summary
ConstructorsConstructorDescriptionKetamaNodeLocator(List<MemcachedNode> nodes, HashAlgorithm alg) Create a new KetamaNodeLocator using specified nodes and the specifed hash algorithm.KetamaNodeLocator(List<MemcachedNode> nodes, HashAlgorithm alg, Map<InetSocketAddress, Integer> nodeWeights, KetamaNodeLocatorConfiguration configuration) Create a new KetamaNodeLocator with specific nodes, hash, node key format, and weightKetamaNodeLocator(List<MemcachedNode> nodes, HashAlgorithm alg, KetamaNodeKeyFormatter.Format nodeKeyFormat, Map<InetSocketAddress, Integer> weights) Create a new KetamaNodeLocator with specific nodes, hash, node key format, and weightKetamaNodeLocator(List<MemcachedNode> nodes, HashAlgorithm alg, KetamaNodeLocatorConfiguration conf) Create a new KetamaNodeLocator using specified nodes and the specifed hash algorithm and configuration. -
Method Summary
Modifier and TypeMethodDescriptiongetAll()Get all memcached nodes.protected TreeMap<Long, MemcachedNode> getPrimary(String k) Get the primary location for the given key.Create a read-only copy of this NodeLocator.Get an iterator over the sequence of nodes that make up the backup locations for a given key.protected voidsetKetamaNodes(List<MemcachedNode> nodes) Setup the KetamaNodeLocator with the list of nodes it should use.voidupdateLocator(List<MemcachedNode> nodes) Update locator status.
-
Constructor Details
-
KetamaNodeLocator
Create a new KetamaNodeLocator using specified nodes and the specifed hash algorithm.- Parameters:
nodes- The List of nodes to use in the Ketama consistent hash continuumalg- The hash algorithm to use when choosing a node in the Ketama consistent hash continuum
-
KetamaNodeLocator
public KetamaNodeLocator(List<MemcachedNode> nodes, HashAlgorithm alg, KetamaNodeKeyFormatter.Format nodeKeyFormat, Map<InetSocketAddress, Integer> weights) Create a new KetamaNodeLocator with specific nodes, hash, node key format, and weight- Parameters:
nodes- The List of nodes to use in the Ketama consistent hash continuumalg- The hash algorithm to use when choosing a node in the Ketama consistent hash continuumnodeKeyFormat- the format used to name the nodes in Ketama, either SPYMEMCACHED or LIBMEMCACHEDweights- node weights for ketama, a map from InetSocketAddress to weight as Integer
-
KetamaNodeLocator
public KetamaNodeLocator(List<MemcachedNode> nodes, HashAlgorithm alg, KetamaNodeLocatorConfiguration conf) Create a new KetamaNodeLocator using specified nodes and the specifed hash algorithm and configuration.- Parameters:
nodes- The List of nodes to use in the Ketama consistent hash continuumalg- The hash algorithm to use when choosing a node in the Ketama consistent hash continuumconf-
-
KetamaNodeLocator
public KetamaNodeLocator(List<MemcachedNode> nodes, HashAlgorithm alg, Map<InetSocketAddress, Integer> nodeWeights, KetamaNodeLocatorConfiguration configuration) Create a new KetamaNodeLocator with specific nodes, hash, node key format, and weight- Parameters:
nodes- The List of nodes to use in the Ketama consistent hash continuumalg- The hash algorithm to use when choosing a node in the Ketama consistent hash continuumnodeWeights- node weights for ketama, a map from InetSocketAddress to weight as Integerconfiguration- node locator configuration
-
-
Method Details
-
getAll
Description copied from interface:NodeLocatorGet all memcached nodes. This is useful for broadcasting messages.- Specified by:
getAllin interfaceNodeLocator
-
getPrimary
Description copied from interface:NodeLocatorGet the primary location for the given key.- Specified by:
getPrimaryin interfaceNodeLocator- Parameters:
k- the object key- Returns:
- the QueueAttachment containing the primary storage for a key
-
getSequence
Description copied from interface:NodeLocatorGet an iterator over the sequence of nodes that make up the backup locations for a given key.- Specified by:
getSequencein interfaceNodeLocator- Parameters:
k- the object key- Returns:
- the sequence of backup nodes.
-
getReadonlyCopy
Description copied from interface:NodeLocatorCreate a read-only copy of this NodeLocator.- Specified by:
getReadonlyCopyin interfaceNodeLocator
-
updateLocator
Description copied from interface:NodeLocatorUpdate locator status.- Specified by:
updateLocatorin interfaceNodeLocator- Parameters:
nodes- New locator nodes.
-
getKetamaNodes
- Returns:
- the ketamaNodes
-
setKetamaNodes
Setup the KetamaNodeLocator with the list of nodes it should use.- Parameters:
nodes- a List of MemcachedNodes for this KetamaNodeLocator to use in its continuum
-