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

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
如何在JavaSpring引导应用程序中合并两个对象?   java序列化与防止按钮、链接等被点击两次有关吗?   java CORBA序列:我可以用方法定义对象序列吗?   java没有SonarQube的Spring批处理项目的代码覆盖   java如何在eclipse中删除上述方法和属性的搜索引用链接   spring boot如何在java注释中使用泛型T类型?   java导入外部(未编译)groovy类,并将它们保留在jar之外   如何在int[]Java中找到所有值的总和?   Java在ArrayList中删除重复项的问题   Java更改菜单栏、项目背景和文本颜色   网络设置网络。使用Elasticsearch JAVA API将主机发布到客户端节点   Python到Java加密/解密,确保密码匹配?   java Faing在Ubuntu12.04上构建eucalyptus的困难   java使用org。阿帕奇。平民fileupload在mysql数据库中上传图像,但调用servlet会得到一个空白的白页