扩展库 / consistent_hash
consistent_hash
确定性虚拟节点环,适合键到节点的稳定分派。
复用 XRT 64 位哈希和互斥锁;C/XL 边界、并发及 Linux sanitizer 已通过。当前 Windows 公开范例 AOT 可运行,顶层对象边界 EXE 仍在退出期失败。
2026-10-30 去掉 getNode 可空中转造成的一次额外正文复制,四组固定输入调用预算3→2;C快照本身仍需一次分配/复制,语言侧仍有NUL检查与长度扫描,非整桥零开销。七个真实原型、新旧C/XLang固定输出及两平台九条普通独立程序通过,Linux含sanitizer。新routing_changes范例演示128键扩容迁移与完整恢复;三份原顶层正例均在AOT退出期失败,M2仍开放,默认门禁保留完整失败现场,不签收整包。
API
| 函数 | 用途 |
|---|---|
create(replicas = 150) | 创建哈希环,每节点 1..10000 个虚拟节点 |
addNode / removeNode | 幂等变更物理节点 |
getNode | 读取独立的目标节点名;空环返回空字符串 |
nodeCount / vnodeCount | 节点数快照 |
xlang
import consistent_hash
auto ring = consistent_hash.create()
ring.addNode("node-A")
ring.addNode("node-B")
println(ring.getNode("user:42"))
映射布局与 XRT 哈希算法和副本数相关;XLang 节点名和键拒绝内嵌 NUL,不提供节点健康检测或数据迁移。C 接口、所有权、容量和验证命令见包内 README。
C 调用失败后可直接重试;后续成功调用清除本线程旧的 XRT 错误。创建、添加和查询的内存故障经 C/XLang 回归验证;节点表与虚拟节点表同时扩容失败时,原环映射不变且可重试。C 教学范例可在 Windows/Linux 单文件 xl run,正式包仍分别编译原生源。Windows 联合门禁覆盖严格 GCC、C 故障/线程、XLang、私有入口和双语固定映射输出;Linux 严格 GCC + ASan/UBSan 覆盖对应边界与黄金输出。当前 Windows 核心及带输出范例 AOT 均通过;顶层 native-backed 对象的边界 EXE 在打印结果后退出失败,整包尚未签收。