Redis:如何处理故障转移?

15

Redis 确实是一个很棒的产品,具备内置复制和惊人的速度。经过测试,它确实感觉就像是 memcached 的 2010 替代品。

然而,在通常使用 memcached 的情况下,采用一致性哈希来平均分布数据到池中的服务器上。如果池中的某个服务器发生故障并无法访问,这将被处理透明地,只有丢失的键将被重新创建并平均分布到剩余可用的服务器中。

Redis 另外还内置了分片功能,并具备自动复制的另一个非常有趣的特性。由于这个特性,数据的可用性可以大大提高,并利用从服务器在风险事件中使用。

然而,我尚未找到任何有效的解决方案来自动处理 Redis 中的从节点切换为新主节点或以其他方式自动处理故障转移。

如何处理?哪种方法是合适的?

1个回答

21
然而,通常使用memcached时,会使用一致性哈希算法将数据均匀地分布在池中的服务器上。如果池中的某个服务器崩溃并停止访问,它会被透明地处理,只有丢失的键将被重新创建并均匀分布在池中剩余的可用服务器上。
这不是memcached所做的事情,客户端库正在执行所有这些操作 ;)
然而,我还没有找到任何好的解决方案来自动处理Redis中一个从服务器更改状态成为新主服务器或通过其他方式自动处理故障转移。
使用SlaveofCommand更改特征。自动故障转移需要更多编码,连接到服务器,如果您失去连接并且无法在X时间内重新建立连接,则选择一个从服务器作为主服务器,并更改所有其他服务器的从-主状态。
更新(2012年8月1日):现在有redis sentinel,一个监视和自动故障转移解决方案,适用于版本2.4.16及更高版本。

嗨,Tobias,谢谢你的回答。我已经知道 memcached 中的一致性哈希是由客户端处理的 :) - Industrial

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接