私はJava Webサーバーを持っており、現在Guavaライブラリを使用してメモリ内キャッシュを処理しています。これは頻繁に使用しています。フェイルオーバーと負荷分散のために、複数のサーバー (2 台以上) に拡張する必要があります。その過程で、代わりにインプロセス キャッシュから Memcache (外部サービス) に切り替えました。ただし、結果にはあまり感銘を受けません。ほぼすべての呼び出しで、別のサーバーへの外部呼び出しを行う必要があり、メモリ内キャッシュよりも大幅に低速です。
Memcache からデータを取得する代わりに、各サーバーでローカル キャッシュを使用し続け、RabbitMQ を使用して、キャッシュを更新する必要があるときに他のサーバーに通知することを考えています。そのため、1 つのサーバーが基になるデータに変更を加えると、他のすべてのサーバーにも、キャッシュが無効であることを伝えるメッセージがブロードキャストされます。すべてのサーバーは、キャッシュ無効化メッセージのブロードキャストとリッスンの両方を行っています。
このアプローチの潜在的な落とし穴を知っている人はいますか? プロダクションでこれを行っている人が他に見つからないので、少し緊張しています。私が見る唯一の問題は、各サーバーがより多くのメモリ (メモリ内キャッシュ) を必要とすることと、特定のサーバーが更新されたデータを取得するのに少し時間がかかることです。他に何か?