2012-11-30 12 views
6

Ich habe eine Website mit codename, mysql, die pfeilchat Installation in sich hat. die Website (sagen xyz.com) ist in Amazon-Umgebung gehostet. Es hat S3 Implementierung für Bild-Uploads, CDN Implementierung für statische Datei dienen, RDS Implementierung für db, SES für Mail senden. Es ist ein Plan zu integrieren Auto-Skalierung für die Website. Ich habe recherchiert, wie der Pfeilchat in diesem Szenario implementiert wird, da der Pfeilchat eine Vorlage und eine Konfigurationsdatei zwischengespeichert hat, die für diese Cache-Freigabe unter den Instanzen einige Nachforschungen anstellen mussten. Ich versuchteArrowchat und Amazon Instanzen

a). erstellt einen S3 Eimer und zugeordnet es zu arrowchat Cache-Ordner - aber es ging nicht gut als arrowchat Bibliothekscode enthalten Datei im Cache-Verzeichnis, so dass in s3 konnten wir nicht direkt Dateien in unserem Pfeilchat-Code enthalten.

b). erstellt eine Subdomain chat.xyz.com und installiert den Pfeilchat in dieser Subdomäne und verwendet es in den Instanzen. - Es hat gut funktioniert, einige Cross-Domain-Code-Probleme, die durch einige Code-Fixes gelöst wurde. Problem war, dass wir denselben Code in einer Domain und Subdomain verwalten mussten.

Bitte lassen Sie mich wissen, ob die Methoden, die ich aufgeführt habe, geeignete Methoden sind. Wenn nein, lass es mich wissen, wenn es einen anderen Vorschlag gibt.

+0

Sorry, aber Sie müssten ein bisschen mehr ausarbeiten, warum sollten Sie den Cache teilen? Ich meine, stellen Sie sich vor, Sie setzen Ihre DNS auf die Route zu Ihrem ELB, wo Sie Ihre Autoscaling-Maschinen haben. Ohne Cache zu teilen, was ist das Schlimmste, was passieren kann? Erstellen Sie Kopien des Cache für jede Instanz? Ist das ein echtes Problem? Bitte erläutern Sie, warum Sie im Namen Gottes diese Cache-Dateien teilen müssen. –

Antwort

1

Sie müssen ElasticCache verwenden und den Knotenpool unter allen Instanzen der Autoscale-Gruppe freigeben. Wenn die Vorlagen verarbeitet werden müssen, können Sie amazon S3 nicht direkt verwenden. (Der PHP-Code einer bestimmten Instanz muss die Vorlage lesen, verarbeiten und zurücksenden). Pseudocode: Ordnen Sie jeder Vorlage einen eindeutigen Schlüssel zu (z. B. data/template_name). Wenn eine Vorlage angefordert wird, überprüfen Sie Memcache, wenn ein solcher Schlüssel vorhanden ist. Ansonsten lesen Sie es von S3 und laden Sie es in den Cache. Sobald es im Cache ist, können alle Instanzen diesen einzelnen Wert verwenden.