Domanda

Sto creando un'applicazione che voglio mettere nel cloud. Questa applicazione ha una funzione principale.

Ospita sessioni CLIENT socket per conto di altri utenti (pensa a IM Beejive per iPhone, dove ospita sessioni IM per i client per mantenere lo stato su quelle reti IM, permettendo al client di connettersi / disconnettersi a piacimento, senza interrompere il Connessione di rete IM).

Ora, il modo in cui l'ho pianificato ora, è che una "istanza di lavoro" può probabilmente gestire solo un numero finito di sessioni client (diciamo 50.000 per amor di argomenti). Tali sessioni saranno attività lavorative di lunga durata.

Il problema che sto cercando di capire è che a volte ho bisogno di eseguire attività per sessioni client specifiche (ad esempio: se devo disconnettere una sessione client). Con Azure, sarei in grado di mettere in coda un'attività più piccola che solo l'istanza che ospita quella specifica sessione client sarebbe in grado di rimuovere dalla coda?

In questo momento sto contemplando GoGrid come mio provider e risolvo questo problema utilizzando il software di Active Messaging Queue di Apache. La mia app Web accoda attività di "disconnessione" assegnate a un ID istanza specifico. Ogni sessione client viene quindi assegnata a un ID istanza specifico. L'istanza quindi rimuove solo le attività di "disconnessione" che le sono assegnate.

Mi chiedo se sia possibile fare qualcosa di simile su Azure e come generalmente lo farei. Mi piace l'idea di non dover impostare diverse VM diverse per scalare, ma invece di distribuire un singolo pacchetto. Inoltre, sarebbe utile usare le code di Azure invece di integrare un prodotto di terze parti come Apache ActiveMQ o persino MSMQ.

È stato utile?

Soluzione

Sarei molto preoccupato per la creazione di un'applicazione di produzione in Azure fino a quando il set di funzionalità, i prezzi e i termini di licenza non saranno finalizzati. Per cominciare, non puoi nemmeno fare un confronto dei costi tra esso e ad es. GoGrid o EC2 o Mosso. Quindi non vedo come potrebbe finire per essere un front-runner. Inoltre, sappiamo che tutti questi sistemi avranno problemi durante la loro maturazione. I servizi di Amazon sono molto più utilizzati rispetto a tutti gli altri e sono disponibili pubblicamente da molti anni. IMHO scegliendo Azure è una ricetta per il dolore mentre si stabilizzano.

Hai considerato Amazon Simple Queue Service per le code?

Altri suggerimenti

Penso che tu possa assolutamente usare Windows Azure per questo. La mia raccomandazione sarebbe quella di creare una coda per ogni sessione che stai monitorando. Quindi accodare il messaggio di disconnessione (ad esempio) sulla coda per quella sessione. L'istanza di lavoro che gestisce quella connessione dovrebbe essere l'unica a eseguire il polling di quella coda, quindi dovrebbe gestire l'esecuzione dell'attività su quella connessione.

Per quanto riguarda l'applicazione che ospita connessioni socket per i client a cui connettersi, ricontrollerei ciò che è consentito poiché penso che solo le connessioni HTTP e HTTPS possano essere fatte con Azure.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top