プロバイダーからのコールバックを受け入れるサービスがあります。 動機:コールバックを失うことは絶対にありません(もちろん、ネットワークに到達できなくなった場合を除きます)。
不可能が発生し、しばらくの間mysqlサーバーに到達できなくなったとしましょう。何度か再試行して失敗したら、セカンダリ永続ストアにフォールバックしたいと思います。
私のオプションは何ですか?キュー、メモリ内キャッシュ?
プロバイダーからのコールバックを受け入れるサービスがあります。 動機:コールバックを失うことは絶対にありません(もちろん、ネットワークに到達できなくなった場合を除きます)。
不可能が発生し、しばらくの間mysqlサーバーに到達できなくなったとしましょう。何度か再試行して失敗したら、セカンダリ永続ストアにフォールバックしたいと思います。
私のオプションは何ですか?キュー、メモリ内キャッシュ?
あなたは「コールバック」を受け取っていると言っていますが、それが何であるかは明らかにしていません。プロトコルは何ですか?ネットワーク越しですか。
HTTP の場合、最善の方法は、アプリケーションがデータを永続的なストレージに書き込めない場合、呼び出し元にエラー (プロトコルに存在する場合は「後でもう一度試してください」) を返すことです。後で再試行する必要があります。
コールバックのような非同期プロセスは、常にダウンストリームの障害に対処し、そのリクエストをキューに入れることができる必要があります。
これが当てはまる支払いプロバイダー(Paypal)と協力しました。リクエストを完全に処理できない場合は、エラーを発信者に送り返すだけです。
私は以前にこれのためにSQLiteにキューを入れました。ただし、私の場合は、MySQLサーバーへのネットワークリンクが失われるのを防ぐためでした。データはローカルで生成されました。
バックアップMySQLサーバーを作成し、プライマリサーバーが故障した場合に備えて接続をそのサーバーに切り替えることができます。フェイルオーバーストアのみになる場合は、アプリケーションサーバーでローカルに実行できます。
ある種のジョブ キュー サーバーをお勧めします。私は個人的に Starling を使用しており、素晴らしい結果が得られています。memcache プロトコルを使用するため、永続的なキューとして簡単に使用できます。 Github のスターリング