Ser*_*sev 4 hash redis consistent-hashing
我想知道我是否走在正确的轨道上.我正在构建(实时)统计/分析服务,我使用redis来存储一些集合和哈希.
现在让我们假设我取得了一些成功,我需要扩展.哈希环技术看起来不错,但我的印象是它只适用于缓存场景.
如果节点发生故障怎么办?理论上,它的密钥现在由其他节点拥有.实际上,他们没有数据.它丢了,对吗?与添加/删除节点相同.
我错过了一些基本的东西吗?这可能是一个穷人的集群吗?
在群集中使用多个节点有两个原因:
这两者根本不同,但您可以实现两者 - 使用一致性散列指向具有标准主/从设置而不是单个节点的一组节点.
如果群集是主数据存储而不是缓存,则需要使用不同的重新分发策略,包括复制数据.
我的实现基于让客户端选择64k桶中的一个用于散列并具有将该桶映射到节点的表.最初,所有映射到节点#1.
当节点#1变得太大时,其从属设备变为主节点#2并且更新该表以将节点#1密钥的一半映射到节点#2.此时,所有读取和写入都将与新映射一起使用,您只需清理现在位于错误节点上的键.根据性能要求,您可以一次检查所有密钥,或者在到期系统时检查随机选择的密钥.