私はサーバーのクラスタ上で実行されているWebサービスを持っています。このWebサービスは内部処理を行い、外部サービスに電話をかけて料金を払うことがあります。オプティミスティックキャッシング同時実行性の設計パターン
サービスに同じリクエストが送信された場合(保証されている場合)、処理を繰り返す必要はなく、処理時間/電力と発生するコストを節約できますサービスコールの外部部分に
しかし、私は私が
- サービスは、高可用性とスケーラビリティのための複数のWebサーバ上で実行されている次の制約がある場合
- 要求がかかることがあり、このキャッシュを管理する方法を見つけ出すのに苦労しています応答するのに5秒かかりますが、その間に私は2つまたは3つの他の同じ要求を受け取っているかもしれません。
分散環境で作業しているときに、最初のサービスコールが応答した(キャッシュ内で使用可能になる)まで、他のサービス呼び出しの実行を延期できますか。
私は、フロントプロキシパターンを入れて、プロキシ内に同じリクエストのキューを構築することを考えました。これにより、最初のリターン時に同じ応答を他のものに返すこともできます。これは正しいパターンですか、このシナリオを扱うより良い並行性パターンですか?
外部のwsもクラスタ化されていますが、それを制御できますか?それは私のコントロールではない –
その前にあなた自身のラッパーキャッシングWebサービスを書くことができる、良い目標を表すようだ。サプライヤから呼び出すサービスです – Codemwnci
すべての_cache_シナリオと同じように:本当に、サービスは_ステートレスであると本当に確信していますか?私。中間の "ChangeCustomerName"がキャッシュを無効にしなければならないため、 "FetchCustomerDetailById"サービスはキャッシュできません。 –