Posso usar um sistema de filas no OpenShift?

Sistemas de filas, no âmbito de aplicações web, podem ser empregados para tarefas onde o processamento de uma requisição demore demasiadamente, impedindo que novas requisições sejam atendidas. Nestes casos, um processo front-end recebe a requisição e repassa-a para a fila. Rodando em segundo plano, existe um processo back-end que recebe o trabalhado da fila e realiza a tarefa.

De cara, nota-se que existem 3 componentes:

  1. Produtor, recebe a requisição e envia-a para a fila;
  2. Consumidor, recebe a tarefa da fila e executa-a;
  3. Fila, distribui as tarefas criados pelo Produtor entre um ou mais Consumidores.
Em um modelo tradicionalmente síncrono, este tipo de arquitetura tem todo o sentido, já que não bloqueia os clientes que acessam o site. Por outro lado, a resposta ao cliente nunca é conclusiva: o trabalho foi enfileirado, mas não se sabe se foi realizado.

Dentro da plataforma da Getup, o conceito de distribuição de tarefas está intrínseco. Por ser uma plataforma escalável, não é necessário jogar tarefas para execução em segundo plano. Ao detectar que existem muitos clientes requisitando à aplicação, a plataforma cria outro gear para atender a demanda, sempre respondendo novas requisições.

Mesmo assim, é possivel utilizar-se de sistemas de filas como Celery e Gearman, mas isto ainda não possui suporte nativo na plataforma. Um forma de viabilizar estes sistemas é implementar um cartridge DIY (Do-It-Yourself - documentação apenas em inglês: https://github.com/openshift/origin-server/tree/master/cartridges/openshift-origin-cartridge-diy-0.1) ou fazer chamadas pra iniciar e terminar devidamente os processo de fila e worker nos scripts do seu próprio gear (ver diretório .openshift/action_hooks para exemplos).

Por fim, qualquer contribuição nesta área é bem vinda. Crie seu cartridge no github que revisaremos e publicaremos na plataforma.
Tem mais dúvidas? Envie uma solicitação

0 Comentários

Por favor, entre para comentar.
Powered by Zendesk