私たちは、今や(10年のような)長い間、積極的に開発/保守を行ってきたシステム(Java Webアプリケーション)を持っています。このシナリオで動作するデザインパターンはありますか?
私たちがやっていることは、WebアプリケーションにRESTful APIを実装することです。 Jerseyを使用したこのWebアプリケーションは、メインアプリケーションと一緒に実行するか、クラウドにデプロイできるようにするための別個のプロジェクトになります。そのため、当社のアプリケーションの性質や年齢の
は、我々は負荷を抑える手助けするために、データベース(postgresの)の上(やや)包括的なキャッシング層を実装しなければなりませんでした。とにかく、RESTful APIでは、データベースの負荷を維持するために、データベースの代わりにGETリクエストが最初にキャッシュに送られるという考えがあります。キャッシュには、登録されたAPIユーザーのほとんどが必要となることを確実にするための方法で入力されます。
キャッシュ・ミスがあった場合、必要なデータは、データベース(また、プロセス内のキャッシュに入力されている)から取得する必要があります。
明らかに、これは私のコード内のRESTfulなエンドポイントメソッドから透過的でなければなりません。私たちは、DBとキャッシュとの通信を処理するための「ブローカ」を作成するという考えを思いつきました。 RESTレイヤーはID(検索する場合)またはポピュレートされたJavaオブジェクト(挿入/更新する場合)を渡し、ブローカは検索/更新/無効化などの処理を行います。
問題もあります拡張性のまず、APIは他のサーバと一緒に使用されるため、データベースへのアクセスは問題にはなりませんが、クラウドにデプロイする場合は、システムと通信する別のBroker実装が必要になります( (潜在的には内部APIを使用して)別の方法でデータベース(つまりデータベース)にアクセスします。
私はすでに、私はこれを実装する方法について大まかなアイデアを持っていますが、それはおそらく、適切なパターンが存在する可能性があるため問題である私を襲いました。自分の解決策を考え出すのではなく、確立されたパターンに従うことができれば、それはおそらくより良い選択になるでしょう。何か案は?
通常のサービス/ DAO /などのようなサウンドです。パターンを私には、しかし、私は本当にあなたが探している答えの種類はよく分かりません。通常、キャッシングはDAO層とDB層との間で処理され、サービスはキャッシングに関する懸念を知らない。 –