百科.dev
全部条目在线工具AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
K

ketama

> 编程语言
开源

一套用于一致哈希的 C 库以及语言绑定

994 stars0 点赞1 次浏览
访问官网GitHub

工具介绍

一套用于一致哈希的 C 库以及语言绑定

正在寻找新的维护人员

目前我没有在任何地方运行这个项目,也没有时间去维护它。我知道 libketama 和各种端口/客户端已经在各个地方投入使用。如果有人在维护这个项目,我会给你提供推送/提交权限。找到我: [email protected] 或 twitter.com/metabrew 或 RJ2 在 freenode

这意味着,每当我们向池中添加或删除服务器时,所有请求都会散布到不同的服务器,这实际上会清空整个缓存。Ketama 通过以下方式解决了这个问题:

  • 将服务器列表(例如:1.2.3.4:11211、5.6.7.8:11211、9.8.7.6:11211)转换为若干(100-200)个无符号整数
  • 从概念上讲,这些数字被放置在一个称为连续体的圆上。(想象一个从 0 到 2^32 的时钟面)
  • 每个数字都链接到其所对应的服务器,因此服务器在连续体上出现了若干个点,每个点对应了它们所对应的数字。
  • 要映射一个密钥->服务器,请将您的密钥哈希为一个无符号整数,然后在连续体上找到下一个最大数字。与该数字相链接的服务器就是该密钥的正确服务器。
  • 如果您将密钥哈希为接近 2^32 的值,且连续体上没有大于您的哈希值的点,则返回连续体中的第一个服务器。

如果您在列表中添加或删除服务器,则只有很小一部分密钥会映射到不同的服务器。服务器文件的格式如下: 1.2.3.4:11211 900 5.6.7.8:11211 300 9.8.7.6:11211 1500 ip:port 和权重, \t 分隔, \n 以行结束。只需将分配给服务器的兆字节数作为权重。权重通过在连续体中增加或减少点来实现。

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

C

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言