分布式系统与邮箱问题处理
1. 分布式键值存储的分片与冗余
在简单的键值存储场景中,可对键进行哈希处理,再对哈希值取模得到整数值。假设要将数据存储在三个节点上,当客户端请求存储键值对(如键为 foo ,值为 bar )时,协调节点会对键执行 hashCode() 方法:
"foo".hashCode()
(101574)
然后对哈希码取模,结果为 0、1 或 2:
101574 % 3
(0)
这表明该键值对应存储在第一个节点上。这种数据分片方法在许多分布式数据存储中广泛应用。
为实现高可用性和分区容错性,需容忍节点从集群中消失。可将所有写操作发送到三个节点,并期望多数节点响应确认。若只有两个节点响应 ok ,在未来读取时或许能处理。
当读取数据时,可从任意一个节点开始请求。若有节点故障并错过部分写操作,可从所有三个节点请求数据,并要求至少两个节点返回相同值。
graph LR
classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;
Client(Client):::process -->|Request| CoordinatingNode(Co - o
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



