0

プロバイダーからのコールバックを受け入れるサービスがあります。 動機:コールバックを失うことは絶対にありません(もちろん、ネットワークに到達できなくなった場合を除きます)。

不可能が発生し、しばらくの間mysqlサーバーに到達できなくなったとしましょう。何度か再試行して失敗したら、セカンダリ永続ストアにフォールバックしたいと思います。

私のオプションは何ですか?キュー、メモリ内キャッシュ?

4

4 に答える 4

1

あなたは「コールバック」を受け取っていると言っていますが、それが何であるかは明らかにしていません。プロトコルは何ですか?ネットワーク越しですか。

HTTP の場合、最善の方法は、アプリケーションがデータを永続的なストレージに書き込めない場合、呼び出し元にエラー (プロトコルに存在する場合は「後でもう一度試してください」) を返すことです。後で再試行する必要があります。

コールバックのような非同期プロセスは、常にダウンストリームの障害に対処し、そのリクエストをキューに入れることができる必要があります。

これが当てはまる支払いプロバイダー(Paypal)と協力しました。リクエストを完全に処理できない場合は、エラーを発信者に送り返すだけです。

于 2009-02-04T07:46:08.437 に答える
0

私は以前にこれのためにSQLiteにキューを入れました。ただし、私の場合は、MySQLサーバーへのネットワークリンクが失われるのを防ぐためでした。データはローカルで生成されました。

于 2009-02-04T03:26:14.140 に答える
0

バックアップMySQLサーバーを作成し、プライマリサーバーが故障した場合に備えて接続をそのサーバーに切り替えることができます。フェイルオーバーストアのみになる場合は、アプリケーションサーバーでローカルに実行できます。

于 2009-02-04T03:27:18.397 に答える
0

ある種のジョブ キュー サーバーをお勧めします。私は個人的に Starling を使用しており、素晴らしい結果が得られています。memcache プロトコルを使用するため、永続的なキューとして簡単に使用できます。 Github のスターリング

于 2009-02-04T03:13:18.770 に答える