Pergunta

Estou criando um aplicativo que eu quero colocar na nuvem. Esta aplicação tem uma função principal.

Ela abriga sessões de socket cliente em nome de outros usuários (pense Beejive IM para o iPhone, onde se hospeda sessões de IM para os clientes para manter o estado nessas redes de mensagens instantâneas, permitindo que o cliente para se conectar / desconectar à vontade, sem quebrar o IM conexão de rede).

Agora, a maneira que eu planejei agora, é que uma 'instância trabalhador pode provavelmente apenas lidar com um número finito de sessões de cliente (digamos 50.000 por causa do argumento). Essas sessões serão muito tempo viveu tarefas do trabalhador.

A questão que eu estou tentando obter minha cabeça em torno é que eu às vezes será necessário executar tarefas para as sessões de cliente específicas (por exemplo: Se eu precisar desconectar uma sessão de cliente). Com Azure, eu seria capaz de fazer fila uma tarefa menor que somente a instância de hospedagem que sessão cliente específico seria capaz de retirar da fila?

Agora eu estou contemplando GoGrid como meu provedor, e eu resolver esse problema usando software fila Active Messaging do Apache. Meus web app enfileira 'desconexão' tarefas que são atribuídas a um Id instância específica. Cada sessão de cliente é, portanto, atribuído a um ID de instância específica. A instância só então Retiradas da fila 'desconexão' tarefas que são atribuídas a ele.

Eu estou querendo saber se é viável fazer algo semelhante no Azure, e como eu geralmente fazê-lo. Eu gosto da idéia de não ter de configurar muitos diferentes VM à escala, mas em vez disso simplesmente implantar um único pacote. Além disso, seria bom para fazer uso de filas do Azure em vez de integrar um produto de terceiros como o Apache ActiveMQ, ou mesmo MSMQ.

Foi útil?

Solução

eu estaria muito preocupado sobre a construção de um aplicativo de produção no Azure até que o conjunto de recursos, preços e termos de licenciamento são finalizados. Para começar, você não pode sequer fazer uma comparação de custos entre ele e por exemplo, GoGrid ou EC2 ou Mosso. Então eu não vejo como ele poderia acabar um dos favoritos. Além disso, sabemos que todos esses sistemas terão falhas à medida que amadurecem. serviços da Amazon estão em uso muito maior do que qualquer um dos outros, e têm sido publicamente disponível por muito anos. IMHO escolher Azure é uma receita para a dor como eles estabilizar.

Você já considerou simples Queue Service da Amazon para filas?

Outras dicas

Eu acho que você pode perfeitamente usar o Windows Azure para isso. Minha recomendação seria a criação de uma fila para cada sessão que você está acompanhando. Então enfileirar a mensagem de desconexão (por exemplo) na fila para essa sessão. A instância trabalhador que está lidando com essa conexão deve ser a única pesquisa que fila, por isso deve lidar com a execução da tarefa nessa conexão.

Com relação à aplicação de hospedagem conexões de soquete para os clientes se conectar, eu verificar novamente sobre o que é permitido como eu acho que apenas conexões HTTP e HTTPS são permitidos a ser feito com Azure.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top