サーバー負荷分散処理を現在勉強中なのですが、局所的な知識しか判らない為全体像を把握したく質問させていただきます。
・ファイルの共有化について
DBの場合はリードレプリカを使用する事でMasterとなるDB情報を他サーバー内DBと連携させる事ができると聞いたのですが、画像や音楽等のDBへ保存したくないデータの場合はどのようにして負荷分散をすればいいのかわかりません。
・ファイルを生成した際の処理
画像ファイルを生成し、サーバー内の適当なディレクトリに保存したとします。
この際、負荷分散用のサーバーにも同様のファイルを生成する必要があるのでしょうか?
・ファイルの圧縮
一定期間が経過した使用頻度の低いファイルは、圧縮処理をかけたいのですが、サーバー負荷軽減をしていらっしゃる企業等では通常どのような仕組みで対応しているのでしょうか?
個人的に考えた方法としては、Masterとなるサーバーから圧縮対象ファイルを選別し、圧縮処理を行う。その後、連携サーバーでも該当ファイルを圧縮させる。該当のファイルへのリクエストがあった際は、サーバー側で該当のファイルがあるか確認を行い、もし存在しない場合は圧縮用フォルダを参照し該当のファイルのみ解凍、返送を行う。デメリットとして、サーバー側で圧縮フォルダの参照処理を挟む必要が有る。
・NodeJS、SocketIO通信
チャットシステムを取り扱っており、NodeJSのSocketIOを利用しています。
ソケット通信を負荷分散し、各情報を互いに連携させる方法を学びたいです。
現在、各Javascriptファイル内に入室情報用の変数を定義し、同ファイル内にチャットサーバーを立ち上げています。負荷を分散させる場合、おそらくロードバランサに該当のチャットサーバーアドレスを登録し、各負荷分散用サーバーに立ち上げる事で実現できるかと存じますが、ここで以下2点の不明点があります。
・変数の共有化
上記の【Javascript内に変数を定義している状態】のままですと、各サーバー間で変数の状態が違う状態になってしまいます。変数を共有化させるには何を勉強すればよろしいでしょうか、ヒントをいただけると助かります。
・NodeJSからDBへのリクエスト
NodeJS上からMysqlへの通信処理を挟む必要が有り、主にselect,Update処理が必要となります。
リードレプリカではSelect処理を軽減させる事ができると聞いたのですがUpdate処理等の変更手続きを行う場合、どう対応すればいいのか教えていただきたいです。
・サーバーの選び方
AWSが負荷軽減機能も備わっており便利とゆう記事を見かけたのですが、もし複数のサーバー連携を考えているならここがいいよ?等のおすすめがありましたら教えていただきたいです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。