Use consistent 哈希为 分布
Consistent 哈希 distributes 关键 across servers 具有 minimal redistribution 当 servers 是 added 或 removed. Used 在 CDN 和 distributed caches.
- 1
Consistent 哈希 maps 两者关键和 servers 到 ring (0 到 2^32-1). 键是 assigned 到下一个服务器 clockwise 开 ring. 当服务器是 added 或 removed, 仅关键在 该服务器's 段是 remapped — 最多关键 stay 开相同服务器. 此 minimizes 数据 movement, unlike 取模哈希哪个 remaps 一切.
- 2 哈希计算器 →
Hash 服务器 IDs 和关键到 ring using SHA-256. hash determines 位置开 ring (0 到 2^256-1, 或 mod 2^32 为 32-位 ring). 到查找服务器为 键: hash 键, 查找下一个服务器 clockwise. Use virtual nodes (150-200 per 服务器) 为 better 分布.
- 3 SHA-3 / Keccak 哈希计算器 →
Use SHA-3-256 为 consistent 哈希. hash 函数应该是 快和 uniformly distributed — SHA-3 或 SHA-256 是好 choices. 键属性: adding/removing 服务器 affects 仅 1/n 的关键 (where n 是数字的 servers), 不所有关键 as 具有 hash(键) % n.
常见问题
- 什么是 virtual nodes?
- 每个 physical 服务器是 mapped 到多个 positions 开 ring (virtual nodes). 此 improves 加载分布 — 具有 150 virtual nodes per 服务器, 加载是 balanced 内 ~10% even 具有 heterogeneous 服务器 capacities. 无 virtual nodes, 服务器's 加载 depends 开其 位置开 ring, 哪个能够是 uneven.
- Where 是 consistent 哈希 used?
- CDNs (Akamai, Cloudflare) 到路由 requests 到边 servers, distributed caches (Memcached, Redis Cluster) 到 distribute 关键, databases (Cassandra, DynamoDB) 到 distribute partitions, 和加载 balancers. 任何系统该 needs 到 distribute 数据 across servers 具有 minimal redistribution 开 topology changes.
解决此任务的工作流
内容哈希并 Base64 编码
计算输入哈希并将摘要编码为 Base64 以便紧凑传输。 管道
哈希并验证完整性
计算输入文本的哈希并与期望哈希比对以验证完整性。 管道
哈希文本并用 CRC32 校验
同时计算加密强度高的 SHA-256 哈希和轻量级 CRC32 校验和,用于数据完整性校验。 管道
MD5 哈希后 Base58 编码
计算 MD5 哈希后编码为 Base58。 管道
多哈希速度比较
对输入哈希并基准测试多种哈希算法,比较速度与输出。 管道
生成密码并哈希
生成随机密码后哈希用于安全存储。 管道
SHA3-256 哈希与 CRC32 校验
计算 SHA3-256 哈希再计算 CRC32 校验和,用于双重完整性校验。 管道
SHA-512 哈希后十六进制编码
计算 SHA-512 哈希后编码为十六进制。 管道
文本反转后哈希
反转文本后计算 SHA-256 哈希。 管道
文本扰乱后哈希
扰乱文本后哈希结果。 管道