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第三方库


热门话题
java谷歌扳手单例重新连接故障   使用AES公钥加密的java Proxyreencryption   java EJB拦截器与CDI拦截器   启动appium browser:org时发生java错误。openqa。硒。WebDriverException:运行Appium命令时出错:路径参数。解析必须是字符串   java在Eclipse项目设置中执行环境的重要性   java如何创建容量受限队列实现?   mysql如何将桌面java应用程序连接到在线数据库(适用于傻瓜)?   如何使用java在给定的时间限制内在会话超时之前在数据库中插入数据?   Java运算符的if语句逻辑&&and||   java Spring启动测试失败,原因是缺少ServletWebServerFactory bean,无法启动ServletWebServerApplicationContext   java有没有办法获取实例中属性/字段的顺序?   如何在没有withColumn的情况下将Spark数据集的所有列强制转换为Java中的字符串?   java allocateIds DatastoreService真实世界使用情况   Java的strictfp修饰符是否通过函数调用应用浮点?   html简单Java小程序未在浏览器中显示   Java 2D平台:一些逻辑/物理怪癖