GitHub的Redis和Resque故障行为?

10

有人了解GitHub如何处理在使用Resque时Redis服务器可能出现的故障或临时不可用吗?

有其他人似乎已经组合出半复杂的解决方案来保留redis-cluster,使用zookeeper(请参见https://github.com/ryanlecompte/redis_failoverSolutions for resque failover redis)。其他人似乎有“穷人版”的故障转移,即在发现连接问题后将从节点切换为主节点而无需redis客户端之间的协调(但这在短暂的不可用情况下可能引起问题)。

问题是:Defunkt是否曾经谈论过GitHub如何处理Redis失败?是否有最佳实践,不涉及zookeeper的故障转移?

关于Resque的原始帖子指出,选择Redis的部分原因是Redis的主从能力,但是该帖子没有描述GitHub如何利用这一点,因为所有工作程序都需要对Redis进行读写访问(请参见https://github.com/blog/542-introducing-resque)。

1个回答

1
基本的Resque库不处理失败。如果一个消息在弹出后立即丢失,那么这个消息将永远消失。您需要编写自己的代码来处理失败,这非常棘手。

https://github.com/resque/resque/issues/93


我看过的最接近答案的东西!感谢你指出来。总之,自从原始帖子以来,我写的所有使用Resque的东西都是这样运作的,以至于Redis失败不会有影响。例如,我会跟踪只发生一次的特定任务,使用单独的数据库条目以便可以检查和重新运行丢失的作业,还构建了我的应用程序,以便所有已安排的作业如果错过一个调度也没有关系。如果Resque文档更清晰地说明这一点,那就更好了,但这就是生活。 - Michael Wasser

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