[SP-pm] Arquitetura de um projeto que utilizará sistema de fila com

Junior Moraes juniiior182 at gmail.com
Wed Mar 14 05:53:32 PDT 2012


Hi.

Se o retorno será devolvido ao usuário, seria válido pensar na utilização
do nodejs. Para o queue system, daria pra usar o kue[1]. Ou mesmo
implementar o node-stomp[2] que já integra com ActiveMQ e RabbitMQ...
A aplicação em comet ficaria bem interessante. Isto se esta comunicação com
o cliente for mesmo necessária.

[1] https://github.com/learnboost/kue
[2] https://github.com/kates/node-stomp

[]'s

Em 14 de março de 2012 08:27, Renato Santos <renato.cron em gmail.com>escreveu:

> Também tem a arquitetura q o ebay apresentou:
> http://highscalability.com/blog/2008/5/27/ebay-architecture.html
> Em 14/03/2012 08:16, "Marcio Ferreira" <marciodesouzaferreira em gmail.com>
> escreveu:
>
>  Só dando um pitaco, ao contrário do mongoDB, experimente o ElasticSearch
>> - performance incrível. E se atente na forma de como será feita a consulta
>> na API das redes, as vezes consultar uma vez ao dia já resolva seu
>> problema, e evite os horários de pico prq rodar seu scraper =S
>> On Mar 14, 2012 8:03 AM, "Tiago Peczenyj" <tiago.peczenyj em gmail.com>
>> wrote:
>>
>>> Oi
>>>
>>> é possivel criar uma fila usando um feed rss ou criando arquivos em um
>>> diretorio. basta ver o que é mais interessante para o teu projeto. Por
>>> exemplo, se vc publicar um feed e tiver do outro lado um consumidor
>>> fazendo pooling vai ser tão bom quanto um ActiveMQ se vc não estiver
>>> com um volume muito grande de dados E se puder esperar uns segundos.
>>> Isso pode simplificar a tua infra num primeiro momento.
>>>
>>> On Tue, Mar 13, 2012 at 11:33 PM, Daniel de Oliveira Mantovani
>>> <daniel.oliveira.mantovani em gmail.com> wrote:
>>> > Shonorio, o Gearman não é um sistema de fila, ele funciona como um
>>> > distribuid system.
>>> >
>>> > Você deva usar o AMPQ[1] ou o Apache ActiveMQ[2] para criar a fila e o
>>> > Gearman para processar a informação. O Worker não sabe da existência
>>> > do Client, quem faz esse intermédio é o Gearman Server[3].
>>> >
>>> > "A Gearman powered application consists of three parts: a client, a
>>> > worker, and a job server. The client is responsible for creating a job
>>> > to be run and sending it to a job server. The job server will find a
>>> > suitable worker that can run the job and forwards the job on. The
>>> > worker performs the work requested by the client and sends a response
>>> > to the client through the job server. Gearman provides client and
>>> > worker APIs that your applications call to talk with the Gearman job
>>> > server (also known as gearmand) so you don't need to deal with
>>> > networking or mapping of jobs. Internally, the gearman client and
>>> > worker APIs communicate with the job server using TCP sockets. To
>>> > explain how Gearman works in more detail, lets look at a simple
>>> > application that will reverse the order of characters in a string. "
>>> >
>>> > [User Interface] <===>[RDBMS]<===> [Queue System]
>>> >                                                                  /\
>>> >                                                                  ||
>>> >                                                                  ||
>>> >                                                       [Distribuid
>>> > System] <===> [Document-oriented database]
>>> >
>>> >
>>> > Se baseando nesse arquitetura o Queue System vai mandando "jobs" de
>>> > acordo com número de workers que você tem disponível, evitando um
>>> > overhead e criando um sistema "auto scalability".
>>> >
>>> > Se eu fosse você eu me preocuparia com a forma de armazenamento dos
>>> > dados, as redes sociais já garantem a integridade dos dados, sendo
>>> > assim uma solução Document-oriented database te pouparia muito
>>> > processamento e trabalho. Existem várias opções, eu recomendo o
>>> > MongoDB[4] mesmo com o Eden Cardim me crucificando por isso.
>>> >
>>> > Guarde os dados dos usuários e do site num RDBMS, se você estiver
>>> > pensando num RDBMS open source eu te recomendo o PostgreSQL, ele tem
>>> > um ótimo suporte ao paradigma temporal.
>>> > Se você usar o PostgreSQL, eu te recomendo usar o Pgpool[5] para
>>> > replication, clustering, load balance etc.
>>> >
>>> > [1] - http://www.amqp.org/about/what
>>> > [2] - http://activemq.apache.org/
>>> > [3] - http://gearman.org/
>>> > [4] - http://www.mongodb.org/display/DOCS/Sharding+Introduction
>>> > [5] - http://www.pgpool.net/mediawiki/index.php/Main_Page
>>> >
>>> > Grande Abraço.
>>> >
>>> > 2012/3/13 Solli Honorio <shonorio em gmail.com>:
>>> >> Pessoal,
>>> >>
>>> >> Estou iniciando um projeto de monitoramento de mídias sociais e fazer
>>> algum
>>> >> processamento com estas informações, e acredito que utilizar esquemas
>>> de
>>> >> fila serviria muito bem para este ambiente.
>>> >>
>>> >> Basicamente o esquema que estou imaginando para o ambiente é :
>>> >>
>>> >> [ Interface com o usuário ] <===> [Banco de Dados] <====> [Sistema de
>>> Fila]
>>> >>
>>> >>                    ||             ||
>>> >>
>>> >>                    ||             +- [Executa a pesquisa]
>>> >>
>>> >>                    ||
>>> >>
>>> >>                    +-- [ Processa o resultado da pesquisa]
>>> >>
>>> >> As ações que eu imagino nisto são :
>>> >>
>>> >> * interface com o usuário não é meu problema, tem um webdeveloper
>>> >> trabalhando nisto;
>>> >> * não quero de maneira alguma fazer os 'agentes' interagir
>>> diretamente com o
>>> >> banco de dados, por isto penso em criar um cliente que leia o banco
>>> de dados
>>> >> e coloque os dados formatados para o agente na fila do agente. O
>>> caminho
>>> >> contrário também, ler o resultado do agente e gravar no banco de
>>> dados;
>>> >>
>>> >> Estou avaliando a possibilidade de utilizar o Gearman (na verdade não
>>> tenho
>>> >> certeza se esta é a melhor alternativa mesmo), na verdade o
>>> >>  AnyEvent::Gearman. Mas algumas coisas me chamaram no Gearman do qual
>>> eu
>>> >> acho meio estranho para o ambiente sistema de fila que eu tenho na
>>> minha
>>> >> cabeça.
>>> >>
>>> >> 1. o worker (aparentemente o cara que executará o serviço) não fica
>>> em loop
>>> >> lendo uma fila, parece que ele está sendo acionado pelo cliente;
>>> >> 2. o parece que o cliente fica 'preso' aguardando o final da execução
>>> do
>>> >> worker.
>>> >>
>>> >> Ainda não tenho código (que o meu cliente não leia isto, pois estou
>>> muito
>>> >> atrasado), mas eu gostaria de obter recomendações de vocês sobre a
>>> >> arquitetura que estou imaginando.
>>> >>
>>> >> Obrigado,
>>> >>
>>> >> Solli Honorio
>>> >>
>>> >>
>>> >> --
>>> >> "o animal satisfeito dorme". - Guimarães Rosa
>>> >>
>>> >> =begin disclaimer
>>> >>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>> >>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>> >>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> >> =end disclaimer
>>> >>
>>> >
>>> >
>>> >
>>> > --
>>> > "If you’ve never written anything thoughtful, then you’ve never had
>>> > any difficult, important, or interesting thoughts. That’s the secret:
>>> > people who don’t write, are people who don’t think."
>>> > =begin disclaimer
>>> >   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>> >  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>> >  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> > =end disclaimer
>>>
>>>
>>>
>>> --
>>> Tiago B. Peczenyj
>>> Linux User #405772
>>>
>>> http://pacman.blog.br
>>> =begin disclaimer
>>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>>> =end disclaimer
>>>
>>
>> =begin disclaimer
>>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
>> =end disclaimer
>>
>>
> =begin disclaimer
>   Sao Paulo Perl Mongers: http://sao-paulo.pm.org/
>  SaoPaulo-pm mailing list: SaoPaulo-pm em pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>


-- 
Junior Moraes (fvox)
Perl Developer
http://www.unsecurity.com.br/

<http://www.twitter.com/juniiormoraes> <http://pt-br.facebook.com/juniiormoraes>
  <http://plus.google.com/104958988925423385684>
<http://www.lastfm.com.br/user/juniior182>
  <http://www.delicious.com/fvox>  <http://github.com/fvox>
-------------- Pr?xima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120314/c94b4c23/attachment-0001.html>


More information about the SaoPaulo-pm mailing list