2012-11-30 19 views
6

codeignitermysqlというサイトにarrowchatがインストールされています。 サイト(xyz.comなど)はamazon環境でホストされています。これは、画像のアップロードのためのS3実装、提供する静的ファイルのCDN実装、DBのRDS実装、メール送信のためのSESを持っています。サイトに自動スケーリングを統合する計画があります。私はこのシナリオで矢印チャットがどのように実装されるかを研究しました。テンプレートと設定ファイルがキャッシュされているので、インスタンス間でこのキャッシュを共有するための調査が必要でした。試しましたArrowchatとAmazonインスタンス

a)です。 S3バケットを作成し、矢印チャットキャッシュフォルダにマップしました - しかし、それはキャッシュディレクトリにarrowchatライブラリコードインクルードファイルとしてはうまくいかなかったので、s3に入っているので、矢印チャットコードにファイルを直接インクルードできませんでした。

b)。 subdomain chat.xyz.comを作成し、そのサブドメインにarrowchatをインストールし、インスタンスで使用しました。 - いくつかのコード修正によって解決されたいくつかのクロスドメインコードの問題を除いてうまくいきました。問題は、ドメインとサブドメインで同じコードを管理する必要があることでした。

私が記載した方法が適切な方法であるかどうか教えてください。いいえの場合は、他に提案があれば教えてください。

+0

申し訳ありませんが、もう少し詳しく説明する必要があります。なぜキャッシュを共有する必要がありますか?つまり、自動スケーリングマシンを持っているELBにルーティングするようにDNSを設定したとします。キャッシュを共有しないと、起こりうる最悪のことは何ですか?各インスタンスにキャッシュのコピーを作成しますか?これは本当の問題ですか?なぜ神の名前でそれらのキャッシュファイルを共有する必要があるのか​​について詳しく説明してください。 –

答えて

1

ElasticCacheを使用し、オートスケールグループのすべてのインスタンス間でノードプールを共有する必要があります。テンプレートに処理が必要な場合はamazon S3を直接使用することはできません。 (特定のインスタンス上のPHPコードは、テンプレートを読み込み、処理してそれを送り返します。) 擬似コード: 各テンプレートに一意のキー(例:data/template_name)を関連付けます。 テンプレートが要求されたら、そのようなキーがある場合はMemcacheをオンにします。 それ以外の場合はS3から読み取り、キャッシュにロードしてください。一度キャッシュに置かれると、すべてのインスタンスがその単一の値を使用できるようになります。