だから今、私は責任を引き継いでいるプロジェクトに参加しています。
途中で実装されていることがわかった部分の 1 つは、サービス レイヤー キャッシュです。どうやら、サービス レイヤーのこのキャッシュは、データベース クラスターでの大量の呼び出しを回避するために実装されたようです。1 つのサーバーがダウンした場合のパフォーマンスと安定性のために、サービス レイヤーは 2 つのサーバーでホストされます。
さて、私の問題ですが、時限キャッシュの実装に最適なパターンは何ですか? 国などのようにめったに変更または更新されないオブジェクトはキャッシュされ、プールがリセットされない限り実際に解放されることはありません。
私たち、または私の前任者は、2 台の別々のマシンに 2 つのアクティブなサービスを持っているため、時間制限のあるキャッシュを実装することを考えています。別の方法として、サービスが互いに通信するようにすることもできますが、もちろん、サービスが互いに依存していないことを考慮して、一方がダウンしても他方が正常に機能するようにします。
現在、アイテムがキャッシュされている辞書は 12 個あります。これらのほとんどはめったに更新されません。これらのディクショナリは、シングルトンではなくシングルトンとして実装されている 1 つのクラスに存在するため、一度だけインスタンス化されます。
この興味深い問題を解決するためにどのようにアドバイスしますか? また、その理由は何ですか?