[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"$fK-PhAjjAGC2k7j5NA0HoxsSaq3kTRUAzk1cfte87PGs":3},{"item":4,"related":44},{"id":5,"type":6,"title":7,"slug":8,"summary":9,"body":10,"coverUrl":11,"productScreenshots":12,"productLinks":13,"authorName":14,"authorUrl":15,"authorSubject":16,"category":17,"tags":22,"sourceLabel":35,"sourceName":36,"sourceUrl":37,"status":38,"seoTitle":7,"seoDescription":9,"canonicalUrl":35,"isFeatured":39,"sno":40,"sortOrder":41,"publishedAt":42,"updatedAt":43,"createdAt":43},"1d54d487-2959-41ae-8748-cb65853f3336","article","Consistent Hashing：新增一台缓存服务器，为什么不用搬走所有数据？","consistent-hashing-stable-sharding","一致性哈希把节点与数据键映射到同一条环上，让扩容或缩容主要影响局部区间，减少缓存集群的全量迁移与冷启动。","缓存集群最怕的一件事，是新增一台机器后所有键都要重新分配。如果哈希结果直接对服务器数量取模，节点数从 4 变成 5，几乎每个键的归属都可能改变，缓存命中率会突然下降。Consistent Hashing（一致性哈希）把键和节点放到同一条环上，只让变化影响局部范围。\n\n想象一只标有数字的圆环。每台服务器占据环上的一个或多个位置，每个数据键也映射到环上的位置，然后沿顺时针方向寻找第一个服务器。新增一台服务器时，它只接管自己与前一个节点之间那一小段键；删除一台服务器时，受影响的键转交给下一个节点，其他区域保持不动。\n\n真实系统通常使用虚拟节点，让一台物理服务器在环上占据多个位置。这样可以把键更均匀地分布，避免某两个节点之间的区间过大。虚拟节点数量、权重和重新平衡策略会影响负载方差；如果节点能力不同，还可以给强机器更多环上位置。\n\n一致性哈希减少的是拓扑变化造成的数据迁移，不会自动消除热点。某个热门键仍可能把大量请求集中到单个节点，通常要叠加副本、热点拆分、请求合并或限流。节点上下线也需要传播新环视图，版本切换不当可能造成短暂的双写或读不到。\n\n它的核心不是“哈希更准确”，而是让映射函数对成员集合的变化更稳定。对于分布式缓存、分片存储和路由选择，这种稳定性可以减少冷启动和迁移成本，把扩容从全量搬家变成局部换租。\n\n环的稳定性也依赖节点视图一致。扩容时，如果一部分客户端先看到新节点，另一部分仍使用旧环，同一个键可能短暂地落到不同位置。生产系统通常需要版本化环、迁移状态和双读策略，把映射变化从瞬间切换变成可观测、可回滚的过程。\n\n如果业务还要求高可用，一致性哈希通常会在主节点之外安排副本节点，并在映射环上继续选择后继位置。这样一台机器故障时，键可以迅速落到副本，但读写一致性、复制延迟和热点副本又成为新的设计问题。环只解决定位稳定性，不会替代存储协议。\n\n资料来源：[Consistent Hashing and Random Trees](https:\u002F\u002Fpeople.csail.mit.edu\u002Fkarger\u002FPapers\u002Fweb.pdf)","\u002Fuploads\u002F2026-09-26\u002F3c77b41d-86b4-4042-a578-2f33d08d81c4.jpg",[],[],"Foundit","https:\u002F\u002Ffoundit.cn","foundit-ai-editorial",{"id":18,"name":19,"slug":20,"description":21},"6179d3b6-dc34-4483-9ded-3cd9f1b37a47","科普","abbreviation","介绍各领域新兴概念",[23,27,31],{"id":24,"name":25,"slug":26},"7c76bfc2-f80f-4ee0-a95d-27bd8708b434","技术","slug",{"id":28,"name":29,"slug":30},"a202d639-99a6-488a-a712-4d4c6ffd7e15","开发","dev",{"id":32,"name":33,"slug":34},"4c2bbea6-eab7-40a8-8447-1de478ff7749","分析","analyse",null,"Consistent Hashing and Random Trees","https:\u002F\u002Fpeople.csail.mit.edu\u002Fkarger\u002FPapers\u002Fweb.pdf","published",false,59,0,"2026-09-27T00:00:00.000Z","2026-09-26T16:26:41.866Z",[45,54,63],{"id":46,"type":6,"title":47,"slug":48,"summary":49,"coverUrl":50,"authorName":14,"sno":51,"publishedAt":52,"createdAt":53},"9ccde95c-d754-4808-91f7-488f392e3eeb","你的品牌在AI眼里到底存不存在？这套系统说了算","automated-geo-monitoring-system","靠手动抽查来验证GEO效果，本质上是在跟概率玩游戏。赢一次，不代表能一直赢。","\u002Fuploads\u002F2026-08-07\u002Fdf111c0d-f14a-4b2a-8347-141e96b71654.jpg",1,"2026-08-07T00:00:00.000Z","2026-08-07T04:31:30.843Z",{"id":55,"type":6,"title":56,"slug":57,"summary":58,"coverUrl":59,"authorName":14,"sno":60,"publishedAt":61,"createdAt":62},"9865c835-21fc-4f74-b154-19c054173557","fscrypt：只给手机里的某个文件夹加密，系统怎么做到？","linux-fscrypt-file-based-encryption","Linux fscrypt 在支持的文件系统中为目录树、文件内容和文件名提供文件级加密。它与整盘加密保护的范围不同，也不会隐藏所有文件系统元数据；本文从解锁密钥说到备份与恢复的边界。","\u002Fuploads\u002F2026-10-17\u002Fdec803fe-0da3-4a9e-8ffc-47427cf599d6.jpg",41,"2026-10-17T00:00:00.000Z","2026-10-17T03:08:37.641Z",{"id":64,"type":6,"title":65,"slug":66,"summary":67,"coverUrl":68,"authorName":14,"sno":69,"publishedAt":70,"createdAt":71},"56d3ebcb-170a-4f96-9134-ae85fb65542b","DANE\u002FTLSA：DNSSEC 能否帮助验证网站的 TLS 证书？","dane-tlsa-dnssec-tls-authentication","DANE 使用 DNS 中的 TLSA 记录发布与 TLS 服务证书或公钥相关的约束，并依赖 DNSSEC 验证记录来源。本文解释它如何补充信任路径，以及为什么它不等于所有网站都能抛弃 CA。","\u002Fuploads\u002F2026-10-13\u002F8c7d9bf5-62c6-47d4-b8eb-c4db7a21fa61.jpg",42,"2026-10-13T00:00:00.000Z","2026-10-13T02:13:55.563Z"]