Consistent Hassing for Python
python-continuum的Python项目详细描述
版权所有(c)2010,作者:Joachim Bauch,mail@joachim-bauch.dehttp://www.joachim-bauch.de/projects/python-continuum/
python continuum提供了一个函数来执行一致的散列。见 维基百科[1]了解更多关于这项技术的信息。
首先我们需要作为服务器存储的continuum对象 信息和以后可用于解析密钥:
>>> from continuum import Continuum >>> c = Continuum()
显然不能查询空的连续性:
>>> c.resolve('my-key1') Traceback (most recent call last): ... IndexError: empty continuum
添加可用作后端的服务器对象:
>>> c.add_server('192.168.0.1', 8080) <Server "192.168.0.1:8080", capacity=1> >>> c.add_server('192.168.0.2', 8080) <Server "192.168.0.2:8080", capacity=1>
您还可以指定要优先使用的服务器的不同容量 它们(默认为1):
>>> c.add_server('192.168.0.3', 8080, 2) <Server "192.168.0.3:8080", capacity=2>
也可以删除服务器对象:
>>> server = c.add_server('192.168.0.4', 8080) >>> c.remove_server(server) >>> len(c) 3
请注意,服务器只能添加一次:
>>> c.add_server('192.168.0.2', 8080) Traceback (most recent call last): ... TypeError: server already added
在添加了所有服务器之后,可以查询连续体中的 应用于给定(字符串)键的服务器:
>>> c.resolve('my-first-key') <Server "192.168.0.1:8080", capacity=1> >>> c.resolve('my-other-key') <Server "192.168.0.3:8080", capacity=2>
[1] | http://en.wikipedia.org/wiki/Consistent_hashing |