複数のサーバーが関与するアプリケーションを構築しています。(それぞれがデータベースと Web サーバーを持つ 4 つのサーバー。1 つのマスター データベースと 3 つのスレーブ + 1 つのロード バランサー)
キャッシュを有効にする方法はいくつかあります。今のところ、それはかなり単純で、まったく効率的ではありません。すべてのキャッシュは、すべてのサーバー間の NFS パーティション共有で行われます。NFS はアーキテクチャのボトルネックです。
- キャッシュを実装するいくつかのアイデアがあります。サーバー レベル (ローカル ファイル システム) で実行できますが、問題は、すべてのサーバーでコンテンツが更新されたときにキャッシュ ファイルを無効にすることです。これは、キャッシュの有効期間を短くすることで実行できます (キャッシュが無効になるため効率的ではありません)。ほとんどの場合、より早く更新する必要があります)
- また、各サーバーが相互に通信するメッセージング システム (XMPP など) によっても実行できます。キャッシュの無効化を担当するサーバーは、他のすべてのサーバーに要求を送信して、キャッシュが無効化されたことを通知します。レイテンシーはおそらく大きくなります (キャッシュが無効化されたことを全員が知るのにより多くの時間がかかります) が、私のアプリケーションはアトミックなキャッシュの無効化を必要としません。
- 3 番目のアプローチは、クラウド システムを使用してキャッシュを保存することです (CouchDB など) が、このシステムのパフォーマンスについてはわかりません。SQL データベースを使用するよりも高速ですか?
Zend Framework を使用する予定でしたが、実際には関係がないと思います (XMPP、CouchDB を処理するために他のフレームワークにおそらくいくつかのパッケージが存在することを除いて)。
要件: 永続キャッシュ (サーバーが再起動した場合、キャッシュの再作成中にサーバーがダウンするのを避けるために、キャッシュが失われてはなりません)