前面には 2 つの nginx サーバー N1、N2 があり、高可用性のためにキープアライブを使用します
バックエンドは 4 つの Tomcat T1、T2、T3、および T4 のクラスターです (セッション共有の問題を解決するために memcached が使用されます)
コード内には js/css などの静的ファイルが含まれており、これらのファイルは扱いやすく、ソース コードはこれら 6 台のサーバー間で同期できます。
システムは pdf/doc などの大量のファイルをアップロードし、後でプレビューするために swf 形式に変換する必要があるため、T3 と T4 は特別な処理に使用されます。その他一般業務はT1、T2にお任せください
ここで問題が発生します。クライアントは pdf または swf ファイルにアクセスしたいと考えており、そのリクエストは nginx に送信されます。ローカルには js/css などの静的ファイルしか存在しないため、ここで傍受することはできません。 doc/pdf がないので、proxy_pass の場所を使用してそこにアクセスします。T3 と T4 ですが、T3 と T4 には Tomcat しかなく、静的ファイルの処理では明らかに効率的ではありません。何をするか?
私には 2 つのアイデアがあります:
どうやって解決したのかわかりませんが?
给我你的怀抱2017-05-16 17:26:18
最も簡単な方法は、doc/pdf リソースの新しいドメイン名またはサブドメイン名を指定し、nginx を構成し、新しいドメイン名に対するすべてのリクエストを t3 と t4 に転送することです。
しかし、ここで質問があります。ユーザーがファイルを t3 にアップロードし、次回ファイルにアクセスしたときに nginx がリクエストを t4 に転送したらどうなるでしょうか?
では、t3 と t4 の間に同期メカニズムはあるのでしょうか?
この問題を解決するにはいくつかの方法があります:
1. おっしゃる通り、sambaなどの共有ファイルシステムを利用し、t3とt4のファイルをここにアップロードします
2. 2 台のマシン間でファイルを手動で同期する利点は、データがバックアップと同等であることですが、欠点については言及されていません
3. 最初の問題も解決できるよう、Youpai のように cdn を使ってみてください
4. 。 。 。