2012-05-14 12 views
10

Resqueを使用している場合、GitHubがRedisサーバーの潜在的な障害または一時的な使用不可能性をどのように扱うかについての洞察はありますか?GitHubのRedisとResqueの失敗の動作ですか?

zookeeper(https://github.com/ryanlecompte/redis_failoverSolutions for resque failover redisを参照)を使ってredis-clusterのホールドオーバーとして半複雑な解決策をまとめたようなものもあります。他の人は、レディスクライアント間の調整なしに接続の問題を最初に見て、スレーブをマスターに切り替える「貧弱な人のフェイルオーバー」があるように見えます(ただし、これは一時的な使用不可のシナリオでは問題があるようです)。

質問:Defunktは、GitHubがRedisの不具合をどのように処理するかについて話しましたか? zookeeperに関係しないフェイルオーバーのベストプラクティスはありますか?

Redisの選択に関する合理的な部分は、redisのマスター/スレーブ機能でしたが、GitHubがこれをどのように活用しているのかについては説明していません。 (https://github.com/blog/542-introducing-resque参照)。

答えて

1

ベースのResqueライブラリは、エラーを処理しません。メッセージをポップ・ダウンした直後にボックスが消滅した場合、そのメッセージは永遠に消失します。失敗を処理するための独自のコードを書く必要がありますが、これは非常に難しいことです。

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

+0

私が見た答えに最も近いもの!それを指摘してくれてありがとう。私はResqueを使って元のポストから書いたことのすべては、レディスの失敗が問題にならないように操作されました。例えば。別のDBエントリを使用してその特定のタスクを追跡し、失われたジョブをチェックして再実行することができます。また、スケジュールされたジョブのスケジューリングが欠落した場合でもすべてのスケジュールされたジョブは問題にならないようにアプリケーションを構築しました。これがもっと明確に文書化されればそれは助けになるだろう。 –

関連する問題