2009-05-06 13 views
1

Ich erstelle eine Anwendung, die ich in die Cloud stellen möchte. Diese Anwendung hat eine Hauptfunktion.Azure: Wird es für meine App funktionieren?

Es beherbergt Socket-CLIENT-Sitzungen im Auftrag anderer Benutzer (denken Sie an Beejive IM für das iPhone, wo es IM-Sitzungen für Clients zur Aufrechterhaltung des Status in diesen IM-Netzwerken hostet, so dass der Client nach Belieben verbinden/trennen kann, ohne zu brechen die IM-Netzwerkverbindung).

Nun, die Art, wie ich es jetzt geplant habe, ist, dass eine 'Worker-Instanz' wahrscheinlich nur eine endliche Anzahl von Client-Sitzungen handhaben kann (sagen wir 50.000 für Argument halber). Diese Sitzungen werden sehr langlebige Arbeiteraufgaben sein.

Das Problem, das ich versuche, ist, dass ich manchmal Aufgaben zu bestimmten Clientsitzungen durchführen muss (zB: Wenn ich eine Clientsitzung trennen muss). Könnte ich mit Azure eine kleinere Aufgabe in die Warteschlange stellen, bei der nur die Instanz, die diese bestimmte Clientsitzung hostet, aus der Warteschlange entfernt werden kann?

Momentan überlege ich GoGrid als meinen Provider, und ich löse dieses Problem mit der Apache Active Messaging Queue Software. In meiner Webanwendung werden Aufgaben zum Trennen der Verbindung in Warteschlangen eingereiht, die einer bestimmten Instanz-ID zugewiesen sind. Jede Client-Sitzung wird daher einer bestimmten Instanz-ID zugewiesen. Die Instanz entfernt dann nur die Aufgaben "Trennen", die ihr zugewiesen sind.

Ich frage mich, ob es möglich ist, etwas ähnliches auf Azure zu tun, und wie ich es im Allgemeinen tun würde. Mir gefällt die Idee, dass ich nicht viele verschiedene VMs skalieren muss, sondern nur ein einzelnes Paket bereitstellen muss. Außerdem wäre es schön, Azure-Warteschlangen zu verwenden, anstatt ein Drittanbieterprodukt wie Apache ActiveMQ oder sogar MSMQ zu integrieren.

Antwort

1

Ich wäre sehr besorgt darüber, eine Produktionsanwendung auf Azure zu erstellen, bis die Funktionen, Preise und Lizenzbestimmungen abgeschlossen sind. Für den Anfang können Sie nicht einmal einen Kostenvergleich zwischen ihm und z. GoGrid oder EC2 oder Mosso. Ich sehe also nicht, wie es zu einem Spitzenreiter kommen könnte. Wir wissen auch, dass all diese Systeme Störungen haben werden, wenn sie reifen. Die Dienste von Amazon werden viel häufiger genutzt als alle anderen und sind seit vielen Jahren öffentlich verfügbar. IMHO Wahl Azure ist ein Rezept für Schmerzen, wie sie sich stabilisieren.

Haben Sie in Betracht gezogen Simple Queue Service von Amazon für die Warteschlange?

+0

Sie haben Recht. Letztendlich scheint es keine gute Idee zu sein, jetzt mit Azure zu gehen. Die unbestimmte Preisgestaltung macht mir am meisten Angst. Der Beta-Status ist auch ein Problem, da meine Anwendung im Juni live geschaltet wird. Danke für die Eingabe! – Redth

0

Ich denke, dass Sie Windows Azure dafür absolut verwenden können. Meine Empfehlung wäre, für jede Sitzung, die Sie verfolgen, eine Warteschlange zu erstellen. Fügen Sie dann die Unterbrechungsnachricht (z. B.) in die Warteschlange für diese Sitzung ein. Die Workerinstanz, die diese Verbindung verarbeitet, sollte die einzige sein, die diese Warteschlange abfragt. Daher sollte sie die Task für diese Verbindung ausführen.

+0

Wie gut würde das skalieren? Ich hoffe, dass möglicherweise Hunderttausende von Sitzungen bereitgestellt werden ... Eine Warteschlange für jeden scheint wie eine Menge Overhead ... – Redth

0

In Bezug auf die Anwendung Hosting-Socket-Verbindungen für Clients zu verbinden, würde ich überprüfen, was erlaubt ist, wie ich denke nur HTTP-und HTTPS-Verbindungen dürfen mit Azure gemacht werden.

Verwandte Themen