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

Marcio Ferreira marciodesouzaferreira at gmail.com
Wed Mar 14 06:38:12 PDT 2012


fatality!

Lorn++ =D
On Mar 14, 2012 10:25 AM, "Lindolfo Lorn Rodrigues" <lorn at lornlab.org>
wrote:

> Eu não sou uma pessoa que goste de escrever emails grandes, talvez algum
> dia eu escreva um blog post sobre isso.
> Para mostrar alguns dos meus motivos, peguei o changelog das duas ultimas
> versões:
>
> http://www.elasticsearch.org/download/2012/03/01/0.19.0.html
> http://www.elasticsearch.org/download/2012/01/10/0.18.7.html
>
> query never returns (#1725<http://github.com/elasticsearch/elasticsearch/issues/issue/1725>
> )
>
>    - Orderly shutdown with unicast discovery might cause the shutdown
>    node to still be part of the election process (#1740<http://github.com/elasticsearch/elasticsearch/issues/issue/1740>
>    )
>    - NullPointerException when asking for null valued json field when
>    fetching search request (#1749<http://github.com/elasticsearch/elasticsearch/issues/issue/1749>
>    )
>
>
> Cluster metadata files destroyed when using blob store gateway causing
> data loss (#1564<http://github.com/elasticsearch/elasticsearch/issues/issue/1564>
> )
>
>    - Two different indexes with the same nested object name causing
>    ArrayIndexOutOfBoundsException (#1575<http://github.com/elasticsearch/elasticsearch/issues/issue/1575>
>    )
>
> S3 blob storage gateway: deleting an index named x destroys data for any
> index with name beginning with x (#1582<http://github.com/elasticsearch/elasticsearch/issues/issue/1582>
> )
>
> Olha o tipo de bug que eles ainda estão resolvendo, se vocês derem uma
> olhada caso ocorra QUALQUER um desses bugs:
>
>   - A possibilidade da sua base corromper é grande.
>   - Seu sistema vai ficar indisponivel
>
> Se a sua base foi corrompida e você precisa reindexar seus documentos,
> isso é um trabalho pesado e lento ( e não tem nada a ver com o ES )
> ElasticSearch, como  o nome já diz, é um sistema para BUSCA, como Solr,
> não um sistema para guardar objetos/dados.
> Usar Solr/ElasticSearch como persistencia de dados é errado, e deixar de
> usar Solr como sistema de busca para usar ElasticSearch também não é uma
> boa escolha.
> Apenas como lição de casa, deem uma olhada no changelog das ultimas
> versões do Solr:
>
> http://lucene.apache.org/solr/solrnews.html
>
> Procurem quantos bugs criticos desse tipo foram corrigidos/existem ( se
> olhar no Jira do projeto )
>
> PS: Até que o email ficou grande :D
> 2012/3/14 Marcio Ferreira <marciodesouzaferreira at gmail.com>
>
>> qual o trauma?
>> On Mar 14, 2012 9:52 AM, "Lindolfo Lorn Rodrigues" <lorn at lornlab.org>
>> wrote:
>>
>>> Use qualquer coisa, menos ElasticSearch.
>>> Sério.
>>>
>>> 2012/3/14 Marcio Ferreira <marciodesouzaferreira at gmail.com>
>>>
>>>> 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at 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 at pm.org
>  L<http://mail.pm.org/mailman/listinfo/saopaulo-pm>
> =end disclaimer
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.pm.org/pipermail/saopaulo-pm/attachments/20120314/dbf82a79/attachment-0001.html>


More information about the SaoPaulo-pm mailing list